Php 有没有办法检查是否存在具有特定SessionId的Laravel会话
当用户更改密码时,我希望使其所有其他会话(当前会话除外)无效,从而从所有rest设备注销用户。为此,我使用Php 有没有办法检查是否存在具有特定SessionId的Laravel会话,php,laravel,laravel-5,laravel-5.1,Php,Laravel,Laravel 5,Laravel 5.1,当用户更改密码时,我希望使其所有其他会话(当前会话除外)无效,从而从所有rest设备注销用户。为此,我使用文件驱动程序,只在数据库中存储用户的会话ID来跟踪用户的会话 现在,使用Laravel 5.1,我们可以通过\illumb\Support\Facades\Session::getId()()获取SessionId,但是有没有办法检查是否存在任何特定的SessionId会话 我见过Laravel,通过使用sessionId命名会话文件来创建会话文件,因此作为最后一个选项,我可以检查file\
文件驱动程序
,只在数据库中存储用户的会话ID来跟踪用户的会话
现在,使用Laravel 5.1,我们可以通过\illumb\Support\Facades\Session::getId()
()获取SessionId,但是有没有办法检查是否存在任何特定的SessionId
会话
我见过Laravel,通过使用sessionId
命名会话文件来创建会话文件,因此作为最后一个选项,我可以检查file\u是否存在(sessionId)
,但我想知道是否还有其他方法?如果您使用的是Laravel 5.6及更高版本,它允许您开箱即用。但这是它的要点
首先,将\illumb\Session\Middleware\AuthenticateSession::class
添加到中间件堆栈中。它应该已经在那里了,但是被注释掉了(这就是它在拉雷维尔的发布方式)。然后,当用户更改密码时,您应该将其传递到Auth::logoutOtherDevices($password)
Laravel在会话中保留密码的散列副本,因此当密码更改时,中间件将强制注销任何具有旧密码散列的会话。最好使用此内置功能,而不是尝试使用自己的功能。如果升级到5.6不是您的选择,我建议您浏览AuthenticateSession
中间件和Auth
保护的源代码,并将相关代码复制到您的项目中。它仍然可以节省你重新发明轮子的时间,也就是说,如果你真的升级到5.6版,你就可以把代码撕掉。