我正在使用 Yii 1.10,会话存在问题。如果一个登录的用户离开他的系统一段时间 Yii 检测到它并销毁会话,在这种情况下,用户应该无法访问任何控制器或任何控制器的任何操作。但就我而言,一些控制器仍然可以访问,它们向我显示结果。这不好。请建议我应该怎么做才能防止可访问性,我做错了什么请帮助我摆脱它。
如果你想用 yii 的方式做,你应该使用访问控制过滤器。它基本上检查当前用户是否可以访问请求的控制器操作。
对于简单的用例,它应该足够了。对于复杂情况,应使用 RBAC。您可以在此处获取有关如何在 yii 中使用 RBAC 的更多详细信息
你可以这样做:
在您的模块中.php
public function beforeControllerAction($controller, $action) {
if (parent::beforeControllerAction($controller, $action)) {
$controller->layout = 'admin_dashboard';
if(empty(Yii::app()->session['admin_id']) || empty($_SESSION['admin_id'])){
unset($_SESSION);
Yii::app()->user->logout();
}
$route = strtolower ($controller->id . '/' . $action->id);
//Add those page which not requires authentication like: 'action/controller',
$publicPages = array(
);
if (Yii::app()->user->isGuest && !in_array($route, $publicPages)){
Yii::app()->getModule('admin')->user->loginRequired();
}
else
{
return true;
}
} else
return false;
}