在Laravel控制台命令中,有没有办法清除会话和/或记住我的cookie?
console命令用于停用用户,因此如果用户在登录时被停用,我希望他们自动注销。
但我不确定这是可能的。想法?
答案 0 :(得分:0)
而不是为什么不尝试这种方法? https://laracasts.com/discuss/channels/laravel/middleware-where-user-status-is-not-active?page=1
基本上,有一个中间件检查当前用户是否处于活动状态,如果不是,则将其重定向到登录
答案 1 :(得分:-1)
以下过程可能会对您有所帮助。您可以创建以下过程的命令。
您需要从“sessions”文件夹中删除会话文件。
通常,Laravel会将会话存储在“storage \ framework \ sessions”文件夹中。
如果从会话文件夹中删除所有文件,则所有活动用户都将自动注销。
您可以使用会话文件夹中的ID找到会话文件,并删除那些已停用的文件。
=============================================== ===========
我曾努力准备解决方案
更新config / filesystems.php文件,如下所示。
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'adminfile' => [
'driver' => 'local',
'root' => storage_path('framework'),
],
然后,您可以使用以下代码删除特定用户的会话文件。
在我的情况下,会话元素存储在“login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d”中,所以我使用了“ if(preg_match('/ login_web _(。)/ i',$ key))* < / strong>“在下面的代码中
$files = Storage::disk('adminfile')->allFiles("sessions");
$users = user::where('is_deactivate',true);
foreach($users as $user){
foreach($files as $file){
if($file!="sessions/.gitignore" and Storage::disk('adminfile')->exists($file)){
$contents = unserialize(Storage::disk('adminfile')->get($file));
foreach($contents as $key=>$value){
if(!is_array($value) and !is_object($value)){
if(preg_match('/login\_web\_(.*)/i',$key))
{
if($value==$user->id){
Storage::disk('adminfile')->delete($file);
}
}
}
}
}
}
}