Как перенаправить на страницу входа администратора вместо страницы входа для неаутентифицированных администраторов в laravel 5.8..15? - PullRequest
0 голосов
/ 10 мая 2019

Кто-нибудь знает, как использовать охрану в методе redirectTo() в Authenticate middleware в laravel 5.8.15 (или просто 5.8)?

Я получаю эту ошибку

"ОбъявлениеApp \ Http \ Middleware \ Authenticate :: redirectTo ($ request, $ guards) должен быть совместим с Illuminate \ Auth \ Middleware \ Authenticate :: redirectTo ($ request) "

use Illuminate\Support\Facades\Route;

protected function redirectTo($request, $guards)
{
    if (! $request->expectsJson()) {
        if (array_first($this->guards) === 'admin') {
            return route('admin.login');
        }
        return route('login');
    }
}

//Updated code but still getting error
//Error:: Declaration of App\Http\Middleware\Authenticate::handle($request, 
  Closure $next, $guard = NULL) should be compatible with 
  Illuminate\Auth\Middleware\Authenticate::handle($request, Closure $next, 
  ...$guards)

//Code
....
use Closure;
use Illuminate\Support\Facades\Auth;
.... 

public function handle($request, Closure $next, $guard = null)
{
    switch ($guard) {
        case 'admin':
            if (Auth::guard($guard)->check()) {
                return redirect()->route('admin.login');
            }
            break;

        default:
            if (Auth::guard($guard)->check()) {
                return redirect('/login');
            }
            break;
    }

    return $next($request);
}

1 Ответ

0 голосов
/ 10 мая 2019

Проверьте это и перенаправьте на ваше состояние

    public function handle($request, Closure $next)
    {
        switch ($this->getGuard()) {
            case 'admin':
                if (!Auth::guard($guard)->check()) {
                    return redirect()->route('admin_login');
                }
                break;
            case 'vendor':
                if (!Auth::guard($guard)->check()) {
                    return redirect()->route('vendor_login');
                }
                break;

            case 'user':
                if (Auth::guard($guard)->check()) {
                    return redirect()->route('user_login');
                }
                break;

            default:
                if (Auth::guard($guard)->check()) {
                    return redirect('/login');
                }
                break;
        }


        return $next($request);
    }
...