在我的应用程序中,我希望允许一些用户注销除他/她之外的所有其他用户。当会话驱动程序设置为文件时,我已经完成了这个功能,但是现在我使用redis作为会话驱动程序,我找不到任何方法来列出所有当前会话,就像文件驱动程序时一样。
问题是
:当使用Redis作为会话驱动程序时,如何列出所有会话ID?
以下是会话驱动程序为文件时使用的代码:
public function signoutAllUsers(Request $request,$sesId=null){
//dd(session());
if ($sesId == session()->getId()){
$dir = storage_path().'/framework/sessions';
$files = scandir($dir);
foreach ($files as $file){
if ($file == session()->getId() || strpos($file,'.') !== false){
//echo "ggg";
continue;
}
try{
unlink($dir.'/'.$file);
}
catch(\Exception $e){
return $e;
}
}
$request->session()->flash('status','success');
$request->session()->flash('msg',__('All users have been signed out successfully'));
return redirect('/method/create');
}
else{
return redirect('/method/create');
}
}
更新
我找到了一个有限的解决方案,这取决于
Redis
立面法
command
:
Redis::command('keys',['*'])
但是,它返回的输出如下:
array:4 [â¼
0 => "laravel:cav17Job1_7l46wAdE2--__"
1 => "laravel:cav17Job1_7l46wAdE2--_"
2 => "laravel:WwerTYmw2VNAfR5nKj3OOGBp2hKytSBK4MWMJ2P9"
3 => "laravel:12tyuwzoFhXPM4f6w4yRPxrYywPon4W41neq6gu"
]
上面的输出包含会话ID和其他缓存条目,在我的应用程序中,我也使用redis进行缓存。
问题是,我如何给存储在redis中的会话提供不同的密钥,而不是
laravel
哪个是缓存键?