Cakephp 3 - 在会话超时时强制注销
问题描述:
我在使用auth组件挣扎。 我的身份验证在插件中进行管理。 在插件的AppController.php我已经建立了这一点:Cakephp 3 - 在会话超时时强制注销
$this->loadComponent('Auth', [
'authenticate' => [ 'Form' => [ 'userModel' => 'BasUsers' ] ],
'loginAction' => [ 'controller' => 'BasUsers', 'action' => 'login', 'plugin' => 'Basic' ],
'userModel' => 'BasUsers',
'loginRedirect' => '/pages/home',
'logoutRedirect' => [ 'controller' => 'BasUsers', 'action' => 'login', 'plugin' => 'Basic' ],
'unauthorizedRedirect' => [ 'controller' => 'pages', 'action' => 'not-authorized' ],
'authError' => false,
'authorize' => ['Controller'],
]
);
我不能管理强制注销(重定向到登录页面)当会话过期。
当会话结束时,尝试$ this-> request-> session() - > read('Auth.User.bas_users_role_id')会返回null,但是会执行控制器/操作。
我错过了什么? 谢谢。
答
1 - 也许你browser retain your credential
2 - 在你Appcontroler尝试使用isAuthorized功能
public function isAuthorized($user)
{
if(is_null($this->request->session()->read('Auth.User.bas_users_role_id') ) :
return $this->redirect(
[ 'controller' => 'BasUsers', 'action' => 'login', 'plugin' => 'Basic' ]
);
else:
// your code
endif;
}
+1
我一直在测试,我发现需要在应用程序中使用的每个插件的初始化方法中加载Auth组件,以使其知道谁将进行身份验证(在本例中为Basic插入 )。我不确定这是否是正确的方法,但它的工作原理。 – user1077915
支票AUTH允许功能......你可能你允许控制器的所有动作。像$ this-> Auth-> allow(); 。限制/删除它可能会解决您的问题。 – Shashikala