Laravel 5.2 Как изменить перенаправления RedirectIfAuthenticated в зависимости от контроллера?
Мне интересно, можно ли по-разному перенаправить аутентификацию для каждого из моих контроллеров? В настоящее время все перенаправляет на / домой. Это предназначено для моего HomeController. Но для ClientController я хочу, чтобы он перенаправлял на /client (если аутентифицирован), а не на /home. Нужно ли создавать новое промежуточное программное обеспечение для каждого из моих контроллеров, или есть способ сделать это путем повторного использования аутентификации?
RedirectIfAuthenticated.php
if (Auth::guard($guard)->check()) {
return redirect('/home'); //anyway to change this to /client if coming from ClientController?
}
У меня есть это на моем ClientController.php
public function __construct()
{
$this->middleware('auth');
}
Заранее спасибо! Довольно новый для Laravel и Middleware.
2 ответа
Не берите в голову, я был в состоянии заставить вещи работать с надлежащей маршрутизацией. Добавлен ClientController под веб-посредником, который отвечает за всю аутентификацию.
Route::group(['middleware' => ['web']], function () {
Route::resource('client', 'ClientController');
}
А в ClientController.php добавьте для использования промежуточного программного обеспечения аутентификации.
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
return view('client');
}
Просто используйте это в User
модель:
protected $redirectTo = '/client';
Вы также можете добиться этого, изменив файл ядра Laravel. Если вы используете Laravel 5.2, перейдите на project_folder\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RedirectsUsers.php
Вы можете найти следующий код:
public function redirectPath()
{
if (property_exists($this, 'redirectPath')) {
return $this->redirectPath;
}
return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home'; //Change the route in this line
}
Теперь измени /home
в /client
, Тем не менее, я рекомендую не менять основные файлы. Вы можете использовать первый.