2010-07-27 72 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' 
      ) 
     ) 
    ) 
);