2010-07-27 108 views

回答

9

會話到期等同於用戶註銷您的應用程序。你可以設置變量

$this->Auth->logoutRedirect = array('component'=>'YourComponent','action'=>'YourAction'); 

並且這將實現類似的結果。你想在AppController的beforeFilter()中設置它。

如果您希望重定向用戶會話過期的第二秒,您需要滾動一些自定義JavaScript以實現此效果。您可以從確定會話過期前的大概秒數開始,將其傳遞給javascript setTimeout()調用並觸發強制用戶註銷的函數。這種方法有一些注意事項,但它也會起作用。

+0

優秀,非常感謝! 它是有道理的。但是,如果用戶禁用Javascript,該怎麼辦? – Juanda 2010-07-28 12:37:26

+0

然後,您將無法強制用戶註銷。您只需等待他們從CakePHP發出下一個請求即可。此時,Cake會看到會話已過期,並強制他們在當時註銷,將它們重定向到您在$ this-> Auth-> logoutRedirect中設置的任何內容。 :) – mikegreenberg 2010-07-28 18:35:48

0

使用您的組件($組件),您可以選擇登錄細節和lougout,例如會話關閉時的重定向頁面。

public $components = array(
    'Session'=>array(
     'timeout' => 620 
    ),'Auth' => array(
     'loginRedirect' => array(
      'controller' => 'pages', 
      'action' => 'display', 
      'home' 
     ), 
     'logoutRedirect' => array(
      'controller' => 'users', 
      'action' => 'login' 
     ), 
     'authenticate' => array(
      'Form' => array(
       'passwordHasher' => 'Blowfish' 
      ) 
     ) 
    ) 
);