如何在会话过期时使laravel自动重定向用户

时间:2014-11-07 11:50:11

标签: laravel

我正在使用laravel 4.2开展一个项目。我希望当用户登录时,他们的会话将在60分钟后过期,并且laravel将自动重定向用户,而不会与Web应用程序交互。但是,我没有在laravel文档中看到任何解释如何执行此方法的内容。如果你可以帮助我解决这个问题,那将非常有用。谢谢。

2 个答案:

答案 0 :(得分:3)

好。您应该每分钟对服务器进行一次AJAX调用,然后处理请求:

setInterval(function(){
     $.get("user/timespan");
}, 6000); // send request each 60 seconds

现在在laravle的控制器中你放了:

class User extends Controller
{
    public function timespan() // here we receive AJAX request
    { 
       $allowed_time = 60 * 60; // seconds
       $current = time(); // we register current time
       $old_time = Session::get("user_loggedin); // we registered this session when user logged in
       if( ($current - $old_time) > ($allowed_time) )
       {
            // do the redirection, since it has stayed more than 60 minutes

        }
    }
}

上述解决方案基本上有效,但您可以在Laravel中将会话时间限制设置为60分钟,然后发送上述ajax请求并检查会话的可用性。这可以帮助您重新计算60分钟的持续时间。

答案 1 :(得分:2)

我认为最好的解决方案是使用cookies。当您放置会话时,还要添加cookie然后检查cookie。

记录时;

Sesion::put("user_data",$user_data);  // or
Auth:attempt($credentials);
Cookie::queue("session_control","value",60);

当你想检查cookie时(比如在过滤器上);

if(!Cookie::has()){
   Session::forget('user_data'); //or
   Auth::logout();
}