我正在努力确认用户何时退出,以便当他们在一个页面上退出时,他们将被带到所有页面上的登录页面。为了检查这一点,我使用的服务器发送事件的循环如下所示:
.as-console-wrapper { max-height: 100% !important; top: 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);
很奇怪。我做了这个观察,因为即使我从另一个选项卡上的页面注销,ping“check”也不会改变。
有没有办法绕过这个或者这只是laravel的本质?如果是这样,除了使用AJAX之外,当您考虑检查身份验证时会想到什么样的想法。
答案 0 :(得分:1)
不使用ajax(甚至仍然有点麻烦)你唯一真正的选择是在注销时重定向用户通过注销脚本(这将转储会话数据)。从那里,通过Auth中间件路由需要经过身份验证的用户的所有路由,如果他们没有登录,他们将被定向到登录页面。 Laravel非常适合这个,因为你可以定义路线' group'在您的路由文件中,或者在控制器的情况下根据需要专门调用中间件。
答案 1 :(得分:0)
您可以采取的方向......最简单的方法是使用会话数据库驱动程序,因为laravel会为您存储用户ID ...
鉴于每个会话都是数据库中的记录...如果您删除所有会话,其中user_id =当前用户ID ini / logout路线,您的所有会话都将过期......