Laravel - 从控制台命令中杀死会话和cookie?

时间:2018-03-16 17:16:08

标签: laravel

在Laravel控制台命令中,有没有办法清除会话和/或记住我的cookie?

console命令用于停用用户,因此如果用户在登录时被停用,我希望他们自动注销。

但我不确定这是可能的。想法?

2 个答案:

答案 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); 
             }
            }
          }
        }  
     }
    }
}