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