Как изменить URL-адрес перенаправления по умолчанию фильтра Laravel 5 Auth?

По умолчанию, если я не зарегистрирован, и я пробую посетить его в браузере:

http://localhost:8000/home 

Он перенаправляет меня на http://localhost:8000/auth/login

Как я могу изменить перенаправление меня на http://localhost:8000/login

Просто чтобы продлить ответ @ ultimate:

  1. Вам необходимо изменить метод App\Http\Middleware\Authenticate::handle() и изменить auth/login /login .
  2. Чем вам нужно добавить $loginPath свойство в ваш $loginPath \App\Http\Controllers\Auth\AuthController . Зачем? См. Источник Laravel .

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

 namespace App\Http\Middleware; class Authenticate { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if ($this->auth->guest()) { if ($request->ajax()) { return response('Unauthorized.', 401); } else { return redirect()->guest('/login'); // <--- note this } } return $next($request); } } 

И это в вашем AuthController:

 namespace App\Http\Controllers\Auth; class AuthController extends Controller { protected $loginPath = '/login'; // <--- note this // ... other properties, constructor, traits, etc } 

Я хотел сделать то же самое на Laravel 5.3. Обработка аутентификации переместилась в Illuminate\Auth\Middleware\Authenticate которая генерирует Illuminate\Auth\AuthenticationException .

Это исключение обрабатывается в App\Exceptions\Handler@unauthenticated .

 /** * Convert an authentication exception into an unauthenticated 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(['error' => 'Unauthenticated.'], 401); } return redirect()->guest('login'); //<----- } 

Просто измените return redirect()->guest('login'); для return redirect()->guest(route('auth.login')); или что-нибудь еще.

Я хотел записать это, потому что мне понадобилось больше 5 минут, чтобы понять это. Пожалуйста, бросьте мне строку, если вам удалось найти это в документах, потому что я не мог.

Это Laravel 5.4 Решение:

В app / Exceptions / Handler.php существует новый метод unauthenticated (), который обрабатывает не прошедших проверку пользователей и перенаправляет путь к логину.

Так что измените

 return redirect()->guest('login'); 

в

 return redirect()->guest('auth/login'); 

Проверка подлинности выполняется с использованием промежуточного программного обеспечения в Laravel 5.

И промежуточное ПО для auth – это App\Http\Middleware\Authenticate .

Таким образом, вы можете изменить его в методе обработки промежуточного программного обеспечения.

EDIT: На Laravel 5.1 просто добавьте защищенный $ redirectPath = '/ url / you / want'; чтобы AuthController сделал бы трюк.

REFER: http://laravel.com/docs/5.1/authentication#included-authenticating


На Laravel 5.1 он полностью перемещен в другое промежуточное программное обеспечение с именем RedirectIfAuthenticated.php в разделе App \ Http \ Middleware

 public function handle($request, Closure $next) { if ($this->auth->check()) { return redirect('/'); //change this part to anywhere you wish to be redirected to } return $next($request); } 

Надеюсь, поможет.

Поскольку ваш другой вопрос был отмечен как дубликат. Я постараюсь ответить на него здесь.

Сначала вам нужно изменить маршрут, как

 <?php Route::get(config('constants.cms_path') . '/login', [ 'as' => 'login', 'uses' => 'Auth\AuthController@getLogin' ]); 

В вашем лезвии … убедитесь, что вы используете именованный маршрут в ссылке URL-адреса входа, например

 {{ route('login') }} 

В Middleware / Authenticate.php измените гостевой

 return redirect()->guest(config('constants.cms_path') . '/login'); 

не могли бы вы php artisan route:list пожалуйста

Вы правы, вы можете установить следующие атрибуты:

 protected $loginPath = 'xxx'; protected $redirectPath = 'xxx'; protected $redirectAfterLogout = 'xxx'; 

Установите для этого атрибута AuthController.php

Чтобы изменить перенаправление после входа в систему, вам нужно только перейти к app / Http / Controllers / Auth / LoginController.php и добавить это внутри класса LoginController:

 protected $redirectTo = '/redirect-url-here'; 

То же самое для перенаправления после нового регистра пользователей, но в этом случае на AuthController.php

Для Laravel 5.4 Вы можете установить protected $ redirectTo = '/'; в LoginController.php FILE. Или в файле RegistersUsers.php вы можете

 protected function registered(Request $request, $user) { return redirect('tosomeRoute'); //Note: This code will run when //The user has been registered }