使用Laravel 5.1 & 'file' Session Driver,
我试图通过在数据库中保存session_id
的记录,为用户提供跟踪他们的会话并随时使其无效的工具。对于数据库,我的意思是,我维护一个名为user_sessions
的表,该表将user_id
与它们的session_id
(由Session::getId()
获得)相关联。
因此,为了使Session无效,我尝试了以下代码:
$sessionId = Session::getId();
Session::setId($sessionId);
Session::invalidate();
并且它工作得非常好,对于用户不使用Remember Me功能的情况。
对于用户使用Remember Me功能的情况,上述代码不起作用,因此,我另外尝试将remember_token
字段设置为null
,如this answer中所指定的,但使用此方法,用户的所有会话都会被破坏,包括当前会话。
2条答案
按热度按时间pb3s4cty1#
你可以简单地使用
如果要获取当前会话ID:
我希望它能帮助
xzlaal3s2#
会议注定是短暂的。如果你想要一些更持久的东西,你可以使用某种长期用户设置表。
创建表格
user_settings
:添加模型:
您还可以通过以下方式将用户与这些关联:
然后,您可以通过以下方式获取所有用户会话:
当用户定期登录或通过记住令牌自动登录时,将触发
Login
事件。您可以在事件服务提供程序中侦听此内容:
请注意,您将不得不手动持久化需要持久化的内容,而不是仅仅将它们放在会话中。