Изменение URL перенаправления для входа в laravel 5.6.3

Я установил тему adminlte и хочу создать область администратора.
Так что мой URL должен выглядеть так:

/admin =  admin home page dashboard
/admin/login
/admin/register/

Это мой маршрут до сих пор:

Route::group(['middleware' => 'auth'], function () {
Route::get('/admin', ['as' => 'admin', 'uses' => 'Admin\DashboardController@index']);
});

Когда я получаю доступ к /admin страница, на которую я перенаправлен /login вместо /admin/login

Перенаправление производится отсюда:

vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php

в unauthenticated метод

Я проследил ответ отсюда: Laravel 5.5 изменить URL-адрес перенаправления для входа без аутентификации ,но я закончил с этой ошибкой:

Declaration of App\Exceptions\Handler::unauthenticated($request, App\Exceptions\AuthenticationException $exception) should be compatible with Illuminate\Foundation\Exceptions\Handler::unauthenticated($request, Illuminate\Auth\AuthenticationException $exception)

Любая идея, как мне изменить мой URL перенаправления? Спасибо

1

Решение

На самом деле у вас нет маршрута /admin/login,
В вашем routes\web.php файл, создать маршрут как

// Authentication Routes...
$this->get('admin/login', 'Auth\LoginController@showLoginForm')->name('login');

И после этого обновления маршрут перенаправления по умолчанию для неавторизованных пользователей выглядит следующим образом

В app/Exceptions/Handler.php

 protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}

return redirect()->guest('/admin/login');
}

Правильное местоположение для обновления: app/Exceptions/Handler.php

Другой способ, где вы можете просто прикрепить префикс к вашим маршрутам:
Обновить файл app/providers/RouteServiceProvider.php как

protected function mapWebRoutes()
{
Route::prefix('admin/')
->middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}

Пожалуйста отметьте Route::prefix('admin/')Теперь, делая это, вы должны иметь такие маршруты, как

Route::get('/', function () {......
Route::get('/login', function () {.....

Теперь вы просто прикрепляете префикс к маршрутам, не меняя их нигде в приложении laravel. Это может быть лучше сделать.

1

Другие решения

в вендоре / laravel / framework / src / Illuminate / Foundation / Exceptions / Handler.php

обновить функцию аутентификации

 /**
* Convert an authentication exception into a response.
*
* @param  \Illuminate\Http\Request  $request
* @param  \Illuminate\Auth\AuthenticationException  $exception
* @return \Illuminate\Http\Response
*/
protected function unauthenticated($request, AuthenticationException $exception)
{
if($request->expectsJson()){
return response()->json(['message' => $exception->getMessage()], 401);

}

$guard = array_get($exception->guards(),0);

switch ($guard) {
case 'admin':
return redirect()->guest(route('admin.login'));
break;

default:
return redirect()->guest(route('login'));
break;
}
}
1

По вопросам рекламы [email protected]