我尝试在laravel中创建多个身份验证,但是我不起作用!
登录后,我需要在特定视图(profil)上重定向,但是il仍将我重定向到登录管理页面(adminconx)。
出什么问题了?
这是我的控制器:
class AdminConnexion extends Controller{
public function __construct(){
$this->middleware('guest:admin',['except' => ['logoutAdmin'] ]);
}
public function create(){
return view('AuresAdmin.ConnexionAdmin');
}
public function login (Request $request){
$this ->validate($request, [
'username_admin' => 'required|alpha_dash|between:5,20',
'password' => ['required','min:10', 'max:16', 'regex:/(?=.*[a-zA-Z])(?=.*\d).+/'],
]);
if ( Auth::guard('admin')->attempt(['username_admin' => $request->username_admin, 'password' => $request->password], $request->remember) ) {
//dd($request);
return redirect()->intended(route('adminProfil'));
}
return redirect()->back()->withInput($request->only('username_admin', 'remember'))
->with('global', 'Erreur: vérifiez vos coordonnées ');
//return redirect()->back()->with('global', 'There was a problem signing in you.');
}
public function logoutAdmin(){
Auth::guard('admin') -> logout();
return redirect(route('adminconx'));
}
}
以及handler.php上未经身份验证的功能:
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
$guard = Arr::get($exception->guards(), 0);
switch ($guard){
case 'admin':
$login = route('adminconx');
break;
default:
$login = route('accueil');
break;
}
return redirect()->guest($login);
}
}
RedirectIfAuthenticated.php:
public function handle($request, Closure $next, $guard = null)
{
switch($guard){
case 'admin':
if (Auth::guard($guard) -> check()){
return redirect() -> route('adminProfil');
}
break;
default:
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
break;
}
return $next($request);
}
web.php:
Route::get('ConnexionAdmin', 'AdminConnexion@create')->name('adminconx');
Route::post('ConnexionAdmin', 'AdminConnexion@login')->name('adminconx.submit');
Route::get('/', 'AdminConnexion@logoutAdmin') -> name('adminlogout');
auth.php:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'commercial' => [
'driver' => 'session',
'provider' => 'commercials',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
'commercials' => [
'driver' => 'eloquent',
'model' => App\Commercial::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
],
'password_timeout' => 10800,
];
感谢您的帮助。