Php Yii会话超时,但仍可以访问某些控制器。如何将用户发送到登录页面
我使用的是Yii 1.10,但该会话存在问题。如果登录的用户离开其系统一段时间,Yii会检测到该系统并销毁会话, 在这种情况下,用户不能访问任何控制器或任何控制器的任何操作。 但在我的例子中,一些控制器仍然可以访问,并且它们正在向我显示结果。这不好。Php Yii会话超时,但仍可以访问某些控制器。如何将用户发送到登录页面,php,session,yii,yii-components,Php,Session,Yii,Yii Components,我使用的是Yii 1.10,但该会话存在问题。如果登录的用户离开其系统一段时间,Yii会检测到该系统并销毁会话, 在这种情况下,用户不能访问任何控制器或任何控制器的任何操作。 但在我的例子中,一些控制器仍然可以访问,并且它们正在向我显示结果。这不好。 请建议我应该做些什么来阻止访问,我做错了什么,请帮助我摆脱它。如果你想用yii的方式做,你应该使用。它主要检查当前用户是否有权访问请求的控制器操作 对于简单的用例,它应该足够了。对于复杂的情况,应该使用RBAC。您可以获得有关如何在yii中使用RB
请建议我应该做些什么来阻止访问,我做错了什么,请帮助我摆脱它。如果你想用yii的方式做,你应该使用。它主要检查当前用户是否有权访问请求的控制器操作
对于简单的用例,它应该足够了。对于复杂的情况,应该使用RBAC。您可以获得有关如何在yii中使用RBAC的更多详细信息。您可以这样做: 在Module.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;
}
您目前正在做什么来防止使用控制器/操作。你在检查用户是否仍然登录吗?@Evil\u skunk如果我每次都开始检查会话,那么我需要在每次操作中检查会话,以检查用户是否登录。我想签入控制器类,或者签入一次,