我想知道如何在Yii Controller Action中強制使用HTTPS(SSL)。Yii Controller Force HTTPS
7
A
回答
7
在本文http://www.yiiframework.com/forum/index.php/topic/25407-forcing-https-in-yii/
class HttpsFilter extends CFilter {
protected function preFilter($filterChain) {
if (!Yii::app()->getRequest()->isSecureConnection) {
# Redirect to the secure version of the page.
$url = 'https://' .
Yii::app()->getRequest()->serverName .
Yii::app()->getRequest()->requestUri;
Yii::app()->request->redirect($url);
return false;
}
return true;
}
}
而對於更多的細節,甚至this看看。
0
代碼:
private static $secureRoutes = array('site/login'=>'',);
public function filterAccessControl($filterChain) {
if(!Yii::app()->getRequest()->isSecureConnection && array_key_exists($filterChain->controller->route, self::$secureRoutes)){
$this->redirect($this->createAbsoluteUrl($filterChain->controller->route, array(), 'https'));
return false;
}
else if(Yii::app()->getRequest()->isSecureConnection && !array_key_exists($filterChain->controller->route, self::$secureRoutes)){
$this->redirect($this->createAbsoluteUrl($filterChain->controller->route, array(), 'http'));
return false;
}
}
1
如果你只是想申請強制HTTPS到你的整個應用程序,這正是我需要的,你可以把這個在你的保護/組件/ Controller.php這樣:
public function beforeAction($action) {
if(! Yii::app()->getRequest()->isSecureConnection) {
$url = 'https://' .
Yii::app()->getRequest()->serverName .
Yii::app()->getRequest()->requestUri;
Yii::app()->request->redirect($url);
return false;
}
}
如果您需要站點範圍內的https,這是比過濾器更清潔的解決方案,因爲使用過濾器時,必須在創建的所有子控件中將父項控制器應用於array_merge。如果你錯過了一個,那麼這個控制器就不會有https的強制。這個小缺點是它在調用過濾器之後被調用,這意味着已經完成了比我們通常在重定向之前更多的處理。
如果您需要控制器上的控制器或行動的基礎,過濾器就是您要找的。
相關問題
- 1. force https https http:nginx subdmain
- 2. Neo4J force HTTPS
- 3. force https aws elasticbeanstalk
- 4. Elastic Beanstalk - PHP/Force HTTPS
- 5. 多站點drupal force https
- 6. ASP.NET Member Force HTTPS on PostBack
- 7. Force Wordpress使用https嵌入
- 8. 對某些文件的Asp.net force https
- 9. .htaccess force www。和https爲特定的域
- 10. 默認情況下Grails 3 force https
- 11. .htaccess force https但排除子域
- 12. 從根文件夾重寫Apache,force https
- 13. Yii Framework如何從Controller中調用View?
- 14. Yii模塊的https問題
- 15. YII。從https重定向到http
- 16. 如何配置Yii框架使用HTTPS?
- 17. http到https重定向Yii框架
- 18. Apache force SSL
- 19. Force https主域名和http所有子域名
- 20. htaccess force https&www。在域名&http沒有WWW子域
- 21. 使用.htaccess force的選擇性SSL http://或https://
- 22. IIS Azure force HTTPS否定規則不起作用
- 23. 清理網址和https重定向衝突使用YII的.htaccess
- 24. 如何在Yii中使用Controller中的Model屬性?
- 25. 在Yii Controller中使用外部函數(幫助函數)
- 26. Yii生成錯誤「Unable to resolve the request <controller/action>」
- 27. 如何從下拉列表中檢索Yii中的Controller?
- 28. 從Yii的小部件視圖中使用Controller方法
- 29. Force logout facebook oauth
- 30. Angular force ng-click
我有問題,HTTPS後,我的所有網站保持HTTPS。你認爲創建HttpFilter很好嗎? –
你說你需要強制HTTPS ..我的解決方案。您是否需要僅對某些控制器操作強制使用HTTPS? –
只有UserController和其他控制器應該是http。當HTTPS中的所有頁面都保持爲https時。 –