Laravel 7: Перенаправление на разные логины у разных охранников - PullRequest
0 голосов
/ 13 июля 2020

Я использую промежуточное программное обеспечение auth и создаю защиту администратора для управления доступом администратора. У меня возникают некоторые проблемы, когда я пытаюсь получить доступ к маршрутам администратора, я хотел бы перенаправить неаутентифицированный трафик, связанный с маршрутами администратора, на страницу / admin / login, но вместо этого он перенаправляет меня на страницу / login. Я не знаю, как связать охранников с маршрутом в классе Authenticate.

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

это код, я бы хотел быть примерно таким:

 protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            if(Auth::guard('admin'))
               return route('admin.login);
            else
               return route(login);
        }
    }
}

но это не работает, потому что единственный параметр, который у меня есть, это запрос $.

Это мои маршруты ...


//Admin Routes
Route::middleware(['auth:admin'])->group(function () {
Route::get('/admin', 'AdminController@index')->name('admin');
Route::get('/newDoncente', 'AdminController@addDocenteView')->name('newDocente');

//Docentes Routes
Route::get('/docentes', 'Docente\DocenteController@getDocentesView')->name('getDocentesView');
Route::get('/editDocente/{id}', 'Docente\DocenteController@editDocenteView')->name('editDocentesView');
Route::get('/docentesTables', 'Docente\DocenteController@getDocentesDatatables')->name('getDocentesTables');
Route::get('/docente/{id}', 'Docente\DocenteController@getDocenteView')->name('getDocenteView');

Спасибо.

1 Ответ

0 голосов
/ 13 июля 2020

Хорошо, я решил это, думаю, это неплохой подход. Я создаю промежуточное ПО и запрашиваю защиту авторизации в промежуточном ПО.

Сначала я создаю промежуточное ПО


class IsAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
    
        if (Auth::guard('admin')->check()) 
        return $next($request);
        else 
        return redirect('/admin/login');

    }
}

Затем я помещаю промежуточное ПО в файл ядра

 protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'isAdmin' => \App\Http\Middleware\IsAdmin::class,

Наконец, я меняю промежуточное ПО для маршрутов

Route::get('/admin', 'AdminController@index')->name('admin');

Теперь все работает нормально, но если у вас есть лучшее решение, я действительно хотел бы знать его.

...