2017-09-26 81 views
0

我正在努力确定用户何时注销,以便当他们在一个页面上注销时,他们会被带到所有页面的登录页面。为了检验这一点,我使用的服务器发送的事件有一个循环,如下所示:Laravel:无需重新加载验证身份验证

// check for new notifications every 2 seconds 
$poller->loop(function ($every) use ($poller) { 
    $poller->write("check", Auth::check()); 
    if (!Auth::check()) { 
     $poller->throwError("out", "You are no longer logged in!"); 
    } else { 
     $poller->pingNotifications(); 
    } 
}, 2); 

我已经但是注意到laravel似乎只在页面是怪异的负载评估Auth::check()。我做了这个观察,因为即使从另一个选项卡上的页面注销,ping“检查”也不会改变。

有没有办法解决这个问题,或者这只是laravel的性质?如果是这样,当您考虑除了使用AJAX之外的认证检查时,会想到什么样的想法。

+0

所以你只是想将它们重定向到登录,一旦他们的会话已过期? – ggg

+0

这是正确的@ggg – Shawn31313

回答

0

只要你可以采取一个方向......使用会话数据库驱动的laravel店时最容易在它的用户ID你...

由于每个会话是在数据库中的记录...如果你删除所有会话,其中user_id =当前用户ID ini您的/注销路线,所有您的会话将过期...

+0

会话,就像Auth在循环时不变。看起来这些都需要页面加载。 – Shawn31313

+0

当你确定循环时,它不会改变,什么会导致它改变?您的请求建立了会话...然后在下次请求之前没有任何更改...所以当您注销时,您会终止会话以及您记录的任何其他会话。这里的投票将不会做任何事情,因为没有什么会改变......您必须在注销路线中捕获它...... – Serge

1

没有使用ajax(它甚至仍然会有点麻烦),唯一真正的选择是重定向用户注销时注销脚本(这将转储会话数据)。从那里,通过Auth中间件路由所有需要通过身份验证的用户的路由,如果他们没有登录,他们将被引导到登录页面。 Laravel非常适合这种情况,因为您可以在路由文件中定义路由“组”,或根据控制器的需要,专门针对某个方法调用中间件。

+0

因此,从一个选项卡上的注销脚本中,我可以自动将该页面重定向到另一个选项卡上? – Shawn31313