2017-08-13 67 views
0

我在使用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,但是會執行控制器/操作。

我錯過了什麼? 謝謝。

+0

支票AUTH允許功能......你可能你允許控制器的所有動作。像$ this-> Auth-> allow(); 。限制/刪除它可能會解決您的問題。 – Shashikala

回答

0

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