Laravel 8多重认证,不验证和重定向



我的管理控制器扩展了控制器类,在那里我使用方法来加载视图页面并通过守卫。Config/auth.php也被修改了,增加了管理守卫和提供程序。在app/Actions/Fortify文件夹中,我添加了AttemptToAuthenticate和RedirectIfTwoFactorAuthenticatable类,并更改了命名空间。我的管理控制器也扩展了Guard。RedirectIfAuthenticated中间件(用于用户)和adminRedirectIfAuthenticated中间件(用于管理员),方法是将guard传递给redirect in handle方法。所有中间件都已注册。在providers/FortifyServiceProvider.php文件中,我将classed添加到寄存器中。

**FortifyServiceProvider.php**
public function register()
{          
$this->app->when([
adminController::class,
AttemptToAuthenticate::class,
RedirectIfTwoFactorAuthenticatable::class

])->needs(StatefulGuard::class)->give(function(){
return Auth::guard('admin');
});
}
**LoginResponse.php:**      
public function toResponse($request)
{
return $request->wantsJson()
? response()->json(['two_factor' => false])
: redirect()->intended('admin/dashboard');
}
**RouteServiceProvider.php**   
public static function redirectTo($gaurd){
return $guard."/dashboard";
}
**Web.php**
Route::group(['prefix'=>'admin','middleware'=>['admin:admin']],function(){
Route::get('/login',[adminController::class,'loginform']);
Route::post('/login',[adminController::class,'store'])->name('admin.store');
}
);
Route::middleware(['auth:sanctum,web', 'verified'])->get('/dashboard', function () {
return view('dashboard');
})->name('dashboard');

Route::middleware(['auth:sanctum,admin', 'verified'])->get('/admin/dashboard', function () {
return view('dashboard');
})->name('dashboard');
**Login.blade.php**    
<form action="{{isset($guard)? url($guard.'/login'):route('login')}}" method='POST'>
@csrf

但是当我登录时,没有错误或重定向。它只是停留在同一个页面。

在你的RouteServiceProvider.php文件中,有一个输入错误

**RouteServiceProvider.php**   
public static function redirectTo($gaurd){
return $guard."/dashboard";
}

必须是$guard而不是$gaurd

最新更新