Как перенаправить пользователя на страницу входа, если не авторизован? - PullRequest
0 голосов
/ 26 февраля 2020

Я много гуглил о перенаправлении, если пользователь не авторизован. Большинство из них говорит go App \ Http \ Middleware \ Autheticated. php. Там есть маршрут перенаправления. в учебнике я вижу

//this method will be triggered before your controller constructor
public function handle($request, Closure $next)
{
    //check here if the user is authenticated
    if ( ! $this->auth->user() )
    {
        // here you should redirect to login 
    }

    return $next($request);
}

Но в моем случае

 protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            return route('login');  
        }
    }

, если я заменю функцию redirecTo на функцию handle, тогда это дает мне ошибку о совместимости.

Также если Я удаляю обратный маршрут ('login') в функции redirectTo, затем он всегда перенаправляет меня на страницу регистрации.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

Вы можете просто использовать промежуточное программное обеспечение Auth в своих маршрутах, например:

Route::group(['middleware' => 'auth'], function(){
   //Put inside this all the routes that you want to force the login
   Route::get('profile' , 'UserController@profile');
});
//Put outside this all the routes that you want to not force login

Если пользователь хочет получить доступ к маршруту внутри группы маршрутизации промежуточного программного обеспечения без входа в систему, промежуточное программное обеспечение перенаправит пользователя на страница входа

0 голосов
/ 26 февраля 2020

Я внес определенные изменения в ExceptionHander. php

protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }
        $guard = Array($exception->guards(), 0);
        switch ($guard) {
          case 'admin':
            $login = 'adminloginpage';
            break;
          case 'futsal':
            $login = 'futsalloginpage';
          break;  
          default:
            $login = 'register'; //i changed this to login
            break;
        }
        return redirect()->guest(route($login));
    }

Из-за этого функция rediectTo была переопределена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...