2011-08-17 10 views
21

मैं वर्तमान में Play का उपयोग कर रहा हूं! 1.2.2 और इसकी नई नेटी क्लाइंट फ्रेमवर्क।एसएसएल को प्ले पर लागू करें! फ्रेमवर्क

मुझे SSL को लागू करने के लिए एक सीधा तरीका नहीं मिला है, हालांकि असीमित रूप से सेवा करने के लिए HTTP और HTTPS प्राप्त कर सकते हैं। क्या कोई भी जो Play के साथ काम करता है! एसएसएल लागू करने की सीधी विधि है? सुनिश्चित नहीं है कि मुझे रीडायरेक्ट बनाने की आवश्यकता है या यदि इसे conf फ़ाइल में तुरंत हल किया जा सकता है।

उत्तर

22

एसएसएल को लागू करने के कुछ तरीके हैं।

सबसे पहले, आपको .secure() विधि, उदाहरण के लिए

<a href="@{Application.index.secure()}">index page</a> 

वैकल्पिक रूप से उपयोग करने के लिए अपने सभी कार्यों को निर्धारित कर सकते हैं, और शायद सबसे अच्छा तरीका है, इस तरह के अपाचे, Nginx के रूप में एक दृश्यपटल HTTP सर्वर के माध्यम से ऐसा करने के लिए, है या लाइटटीपीडी।

फ्रंटेंड http सर्वर का विचार यह है कि आपका एप्लिकेशन पोर्ट 9000 पर चलता है, लेकिन बाहरी नेटवर्क से उपलब्ध नहीं है। HTTP सभी आने वाले अनुरोधों के लिए ज़िम्मेदार है, और केवल HTTPS स्वीकार करने के लिए कॉन्फ़िगर किया गया है। एचटीटीपीएस को HTTP सर्वर द्वारा संभाला जाता है, और अनुरोध को तब प्ले करने के लिए अग्रेषित किया जाता है।

यह आपके पूरे प्ले एप्लिकेशन को सामान्य के रूप में काम करने के लिए छोड़ देता है, और एसएसएल को किसी अन्य एप्लिकेशन पर ऑफ़लोड किया जाता है।

यह वही विधि HTTP सर्वर की बजाय लोड बैलेंसर पर लागू की जा सकती है, लेकिन मुझे लगता है कि अधिकांश लोग कॉर्पोरेट सर्वर में चलने तक HTTP सर्वर के बहुत सस्ता विकल्प के साथ जाएंगे।

+0

बहुत उपयोगी और मैं कई तरीकों के विचार की सराहना करता हूं। – crockpotveggies

12

नियंत्रक में आप request.secure के खिलाफ जांच सकते हैं और या तो रीडायरेक्ट कर सकते हैं या 403/एक्सेस से इनकार कर सकते हैं।

आप एक पूरे के नियंत्रक ऐसा करने के लिए एसएसएल मजबूर कर सकते हैं:

public static class ForceSSL extends Controller 
{ 
    @Before 
    static void verifySSL() 
    { 
     if (request.secure == false) 
      redirect("https://" + request.host + request.url); 
    } 
} 

... और एक अन्य नियंत्रक व्याख्या:

@With(ForceSSL.class) 
public class Foo extends Controller 
{ 
.... 
} 

भी देखेंhttp://groups.google.com/group/play-framework/browse_thread/thread/7b9aa36be85d0f7b

+1

यदि उसकेोकू का उपयोग करते हैं, तो यह कोड "बहुत सारे रीडायरेक्ट" का कारण बन जाएगा। यहां से समान कोड का उपयोग करें: http://stackoverflow.com/questions/7415030/enforce-https-routing-for-login-with-play-framework – seePatCode

संबंधित मुद्दे