如何解决Laravel身份验证中重定向页面的问题?

时间:2020-07-04 19:33:54

标签: php laravel laravel-7 laravel-7.x

我尝试在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,

];

感谢您的帮助。

0 个答案:

没有答案