Laravel使用不同的用户表返回419页过期



我正在尝试使用不同的用户表对我的Laravel项目进行身份验证,这个想法是有默认的用户表和成员表都有电子邮件和密码字段。

这里是我的config/auth.php

'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'members' => [
'driver' => 'session',
'provider' => 'members_auth',
],
],

'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => AppModelsUser::class,
],
'members_auth'  => [
'driver' => 'eloquent',
'model'  => AppModelsMembers::class,
],

],

然后运行php artisan config:clearphp artisan config:cache

并将我的成员模型更改为这个

use IlluminateDatabaseEloquentModel;
use IlluminateAuthAuthenticatable;
use IlluminateContractsAuthAuthenticatable as AuthenticatableContract;
class Members extends Model implements AuthenticatableContract
{
use Authenticatable;

然后是MembersController认证函数

public function authenticate(Request $request){
$formFields = $request->validate([
'email' => ['required', 'email'],
'password' => 'required'
]);

//authenticate user
if(Auth::guard('members')->attempt($formFields)){

$request->session()->regenerate();

return redirect('/')->with('message', 'Welcome back! Here are some items you missed when you were gone.');
}
return back()->withErrors(['email' => 'Invalid Credentials'])->onlyInput('email');
}

我得到了路由和我的登录表单配置也像下面我已经尝试@csrf和把SESSION_DOMAIN=在我的。env文件,但仍然419错误登录后。

<form class="mt-8 space-y-6" action="/members/authenticate" method="POST">
{{ csrf_field() }}

显示419页的原因是因为中间件路由保护,所以我只是添加到我的路由。

Route::get('/dashboard', [HomeController:: class, 'dashboard'])->middleware('auth');

Route::group(['middleware' => ['auth:web,members'] ], function(){
Route::get('/dashboard', [HomeController::class, 'dashboard']);
});

最新更新