2017-08-13 10 views
0

私は認証コンポーネントに苦労しています。 私の認証はプラグインの中で管理されています。セッションの有効期限が切れたとき、私はログアウトを強制的に管理することはできません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'], 
           ] 
         ); 

(ログインページにリダイレクト): プラグインのAppController.phpでは、私は、この設定しました。

セッションが終了すると、$ this-> request-> session() - > read( 'Auth.User.bas_users_role_id')を実行するとnullが返されますが、コントローラ/アクションが実行されます。

私には何が欠けていますか?おかげさまで

+0

チェックを使用するようにしてください。 $ 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

私はテストを行ってきましたが、誰が認証を行うのかを知るために、アプリケーションで使用されるすべてのプラグインのinitializeメソッドにAuthコンポーネントをロードする必要があることがわかりました(この場合はBasicプラグイン)。これが正しいアプローチであるかどうかはわかりませんが、うまくいきます。 – user1077915

関連する問題