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