最好使用过滤器在控制器级别进行管理。
在你的组件目录中设置 2 个过滤器HttpsFilter
and HttpFilter
如下:-
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;
}
}
and
class HttpFilter extends CFilter {
protected function preFilter( $filterChain ) {
if ( Yii::app()->getRequest()->isSecureConnection ) {
# Redirect to the secure version of the page.
$url = 'http://' .
Yii::app()->getRequest()->serverName .
Yii::app()->getRequest()->requestUri;
Yii::app()->request->redirect($url);
return false;
}
return true;
}
}
然后在每个控制器中使用过滤器强制使用 https,可选地通过操作:
class SiteController extends Controller {
public function filters()
{
return array(
'https +index', // Force https, but only on login page
);
}
}
编辑:如果filters()
上面的功能似乎不适合你,请尝试
return array(
array('HttpsFilter +index'), // Force https, but only on login page
);
See http://www.yiiframework.com/doc/guide/1.1/en/basics.controller#filter(以及对此的评论)。