Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 有没有办法检查是否存在具有特定SessionId的Laravel会话_Php_Laravel_Laravel 5_Laravel 5.1 - Fatal编程技术网

Php 有没有办法检查是否存在具有特定SessionId的Laravel会话

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\

当用户更改密码时,我希望使其所有其他会话(当前会话除外)无效,从而从所有rest设备注销用户。为此,我使用
文件驱动程序
,只在数据库中存储用户的
会话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版,你就可以把代码撕掉。