我正在尝试使用不同的用户表对我的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:clear
和php 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']);
});