Laravel 拉维尔';s";注销其他设备“;功能不工作

Laravel 拉维尔';s";注销其他设备“;功能不工作,laravel,authentication,logout,Laravel,Authentication,Logout,我使用的是Laravel6.0.4。当用户从新位置登录时,我被要求从所有设备注销。据推测,Laravel通过以下方式使这一点变得非常简单: 我可以看到代码更改了数据库中的密码散列,但用户仍然登录。因此,一定是在代码的某个地方,我未能检查哈希是否已更改。我不是专家,也许这是一个与警卫有关的问题?我们的系统有四个警卫。可能是因为一些警卫没有得到正确的身份验证吗?卫兵不是在使用数据库中的哈希,而是在使用其他系统 那么,我该如何理解为什么Laravel不让人们从其他设备上注销呢?我会分享配置数据,如果

我使用的是Laravel6.0.4。当用户从新位置登录时,我被要求从所有设备注销。据推测,Laravel通过以下方式使这一点变得非常简单:

我可以看到代码更改了数据库中的密码散列,但用户仍然登录。因此,一定是在代码的某个地方,我未能检查哈希是否已更改。我不是专家,也许这是一个与警卫有关的问题?我们的系统有四个警卫。可能是因为一些警卫没有得到正确的身份验证吗?卫兵不是在使用数据库中的哈希,而是在使用其他系统

那么,我该如何理解为什么Laravel不让人们从其他设备上注销呢?我会分享配置数据,如果你想,只要问我哪些数据发布


Auth.php

    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'staff' => [
            'driver' => 'session',
            'provider' => 'staff'
        ],
       'partner' => [
           'driver' => 'session',
           'provider' => 'partner'
       ],
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
    ],

    'providers' => [
       'partner' => [
           'driver' => 'eloquent',
           'model' => \App\Models\Partner::class,
       ],
        'staff' => [
            'driver' => 'eloquent',
            'model' => \App\Models\Staff::class
        ],
        'users' => [
            'driver' => 'database',
            'table' => 'users',
        ],
    ],

    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'partner' => [
            'provider' => 'partner',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'staff' => [
            'provider' => 'staff',
            'table' => 'password_resets',
            'expire' => 60,
        ]
    ],
session.php

    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => env('SESSION_CONNECTION', null),
    'table' => 'sessions',
    'store' => env('SESSION_STORE', null),
    'lottery' => [2, 100],
    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),
    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => env('SESSION_SECURE_COOKIE', false),
    'http_only' => true,
    'same_site' => null,

您是否在Kernel.php中启用了
AuthenticateSession
类?是的,正在调用该类,但它总是运行到第一个if:
if(!$request->user()|!$request->session(){return$next($request)}
这是我不明白的,这是否意味着请求没有用户,而且它也没有会话?那么认证是如何实现的呢?
    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => env('SESSION_CONNECTION', null),
    'table' => 'sessions',
    'store' => env('SESSION_STORE', null),
    'lottery' => [2, 100],
    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),
    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => env('SESSION_SECURE_COOKIE', false),
    'http_only' => true,
    'same_site' => null,