2011-01-24 17 views
7

में एसएसएल को कार्यान्वित करने के लिए मैंने एक विशिष्ट सुरक्षित फ़ोल्डर (उदाहरण के लिए सर्वर पर https फ़ोल्डर बनाम http फ़ोल्डर) का उपयोग कर सुरक्षित पृष्ठों को लागू किया है। मैंने ज़ेंड फ्रेमवर्क का उपयोग शुरू कर दिया है और https का उपयोग करने के लिए एप्लिकेशन के हिस्सों (जैसे लॉगिन) करना चाहूंगा। मैंने Google पर और यहां तक ​​कि यहां खोज की है लेकिन कुछ भी नहीं मिला जो बताता है कि इसे कैसे संभालना है। क्या मेरे पास विशिष्ट नियंत्रकों/कार्यों के लिए https हो सकता है? धन्यवाद।ज़ेंड एमवीसी

मान लीजिए कि आप एक मॉड्यूल/नियंत्रक/की तरह कार्रवाई करते हैं:

+1

के लिए डुप्लिकेट [कैसे करने के लिए मिल-sslmod-rewritezend-ढांचा-MVC-मजदूर एक साथ] (http:/अपने बूटस्ट्रैप में इसे जोड़ने के लिए:

  class Application_Controllerplugins_Ssl extends Zend_Controller_Plugin_Abstract { public function preDispatch (Zend_Controller_Request_Abstract $request) { $shouldSecureUrl = false; //get the config settings for SSL $options = Application_ServiceManager::getConfig()->ssl; //if config is empty, exit if (!is_object($options)) return; //simpler to use $options = $options->toArray(); //only use it production environment if (APPLICATION_ENV == 'production') { if ( (isset($options['modules'][$request->module]['require_ssl']) && $options['modules'][$request->module]['require_ssl']) || (isset($options['modules'][$request->module][$request->controller]['require_ssl']) && $options['modules'][$request->module][$request->controller]['require_ssl']) || (isset($options['modules'][$request->module][$request->controller][$request->action]['require_ssl']) && $options['modules'][$request->module][$request->controller][$request->action]['require_ssl']) ) { $shouldSecureUrl = true; } if ($shouldSecureUrl) { $this->_secureUrl($request); } } } protected function _secureUrl (Zend_Controller_Request_Abstract $request) { $server = $request->getServer(); $hostname = $server['HTTP_HOST']; if (! $request->isSecure()) { $url = Zend_Controller_Request_Http::SCHEME_HTTPS . "://" . $hostname . $request->getPathInfo(); $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); $redirector->setGoToUrl($url); $redirector->redirectAndExit(); } } }  

मैं उल्लेख करना भूल गया /stackoverflow.com/questions/380050/how-to-get-sslmod-rewritezend-framework-mvc-working-together) – criticus

उत्तर

13

स्पष्ट तरीका एसएसएल config जहां, मॉडल/नियंत्रक/कार्रवाई के स्तर के लिए एसएसएल समर्थन सक्षम कर सकते हैं तो तरह के लिए एक .ini फ़ाइल है इस:
SSLModule-> IndexController-> testAction

 

## ini file (can be config.ini also) 
ssl.modules.SSLModule.require_ssl = true //-> entire module requires SSL 
ssl.modules.SSLModule.Index.require_ssl = true //-> entire controller requires SSL 
ssl.modules.SSLModule.Index.test.require_ssl = true //-> single action requires SSL 
 

आप या तो config के माध्यम से इस पार्स, या अलग से, और अपने बूटस्ट्रैप फ़ाइल में तुम यहाँ मेरे जैसे, एक controllerplugin शामिल कर सकते हैं।

ऐसा करने के कई अन्य तरीके हैं, लेकिन मुझे लगता है कि आपको यह विचार मिलता है!

 

$Zend_Controller_Front->registerPlugin(new Application_Controllerplugins_Ssl()); 
 
+3

एक आकर्षण की तरह काम किया। बहुत बहुत धन्यवाद, बहुत मूल्यवान योगदान। – jgnasser

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