代码之家  ›  专栏  ›  技术社区  ›  Johnny

如何从Laravel中的所有设备自动注销所有用户?

  •  3
  • Johnny  · 技术社区  · 6 年前

    我花了2个小时试图自动注销用户,但无论我做什么,我都不能强迫用户在24小时后注销。

    成功登录后,我有一个cookie,如下所示

    Name: remember_web_59ba36addc2b2f9401580f014c7f58ea4e30989d
    
    Content: eyJpdiI6IkE4aFU0RCtVNkhwK3VMbGJ0ZndVUFE9PSIsInZhbHVlIjoidExYTG9tUUc5RkVQUkhjaU80a1wvdHFXcDk4eUxsaG5SRmxLVXp5c1JMdFJlYzFLZ3ZValBoQkhaY1hkKzFqcHIraDROZE5wU0s0K00wRDlMSVExMk50cUxNK2xzMzgrdmx4VW1hZ1paWVpJPSIsIm1hYyI6Ijc2NDZiYTI2MTU1NTA0YjZjMjA4ZmY1ZmU2MzdmZGFhYzdkMWU4NTRmNzEwYzIwZjRkN2E3ZDNlMDQyNWQ5N2QifQ%3D%3D
    
    Created: Tuesday, December 12, 2017 at 6:55:00 PM
    Expires: Sunday, December 11, 2022 at 6:55:00 PM
    

    我的会话。php文件如下所示

    'driver' => env('SESSION_DRIVER', 'database'),
    'lifetime' => 1,
    'expire_on_close' => false,
    

    我的环境文件如下所示

    BROADCAST_DRIVER=log
    CACHE_DRIVER=file
    SESSION_DRIVER=database
    QUEUE_DRIVER=sync
    

    我的php。ini看起来像这样

    session.gc_maxlifetime=14
    

    我试图改变 'driver' => env('SESSION_DRIVER', 'database'), 对文件、cookie、redis来说,什么都不起作用。

    为什么我不能从所有设备注销用户?

    1 回复  |  直到 6 年前
        1
  •  6
  •   Sapnesh Naik    5 年前

    您可以在中更改空闲会话过期的时间段 /app/config/session.php 文件

    24小时=1440分钟

    'lifetime' => 1440,
    
    'expire_on_close' => false,
    

    或者,如果上述方法不适用,您也可以这样做,

    我们将手动删除sessions文件夹并清除User表中的所有remember\u标记。

    创建 new command flush:session .

    在命令的handle方法中,执行以下操作:

    use App\User;
    use File;
    
    public function handle()
    {
        File::cleanDirectory(storage_path().'/framework/sessions');
        User::query()->update(['remember_token' => '']);
    }
    

    然后 schedule 此命令将在每午夜运行

    $schedule->command('flush:session')->daily();
    

    附笔 如果您想对此进行即时测试,只需运行

    php artisan flush:session
    

    在终端中,您的所有用户都应该注销!