我正在CakePHP 3.2上开发一个Web应用程序,其中用户身份验证是一个两步过程。
每个用户都有用户名,密码,PIN以及其他字段。
步骤1:用户/登录-输入用户名和密码。
步骤2: users / pin_authorize-如果步骤1成功,则输入pin。
每次用户不活动大约30分钟时,我都希望将其重定向到pin_authorize页而不是主登录页。用户只有插入正确的PIN才能访问其他页面。
// AppController
public function initialize() {
parent::initialize();
$this->loadComponent('Auth',[
'loginAction' => [
'plugin' => 'Admin',
'controller' => 'Users',
'action' => 'login'
],
'loginRedirect' => [
'plugin' => 'Admin',
'controller' => 'Users',
'action' => 'pinAuthorization'
],
'logoutRedirect' => [
'plugin' => 'Admin',
...
]
]);
}
// UsersController
public function pinAuthorization() {
if (!$this->Auth->user('id')) {
return $this->redirect([
'plugin' => 'Admin',
'controller' => 'Users',
'action' => 'login'
]);
}
if ($this->request->is('post')) {
if ($this->Users->pinAuthorize($this->request->data['pin'])) {
$this->request->session()->write("PinAuthStatus", 1);
return $this->redirect([
'plugin' => 'Admin',
'controller' => 'Users',
'action' => 'dashboard'
]);
}
$this->Flash->error(__('Invalid PIN.'));
}
$this->viewBuilder()->layout(false);
}
任何帮助将不胜感激。谢谢!
我建议您在用户成功登录后创建一个cookie,该cookie将在30分钟后过期,并在每次验证isAuthorized时进行更新。然后,如果cookie过期并且会话仍然存在,则可以重定向到isAuthorized内的pin授权页面。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句