重定向以在会话超时

时间:2016-05-20 11:53:30

标签: cakephp cakephp-3.0

关于网络应用程序的简介:

我正在CakePHP 3.2上开发一个Web应用程序,其中用户身份验证分为两个步骤。

每个用户都有用户名,密码,PIN以及其他字段。

第1步: users / login - 输入用户名和密码。

第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);
    }

任何帮助都将受到高度赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

我建议在用户成功cookie后30分钟到期后创建logged in,并在每次验证isAuthorized时更新。然后,如果cookie已过期且会话仍然存在,您可以在isAuthorized中对引脚授权页面执行redirect