Ответ 1
Для Laravel 5,
Откройте AuthController
класс: приложение /Http/Controllers/Auth/AuthController.php
Добавьте свойство ниже в класс
protected $redirectAfterLogout = 'auth/login';
вы можете изменить auth/login
на любой URL-адрес.
Я работаю с системой аутентификации Laravel 5, предоставленной по умолчанию. После выхода из системы пользователь перенаправляется на корневую страницу, но я хотел бы изменить это. Мне удалось сделать это для процесса "входа в систему" и "регистрации", указав "$ redirectTo" в "AuthController.php". Но для "выхода из системы" я определил "$ redirectAfterLogout" в одном и том же месте, но, похоже, он не учитывается.
Может ли кто-нибудь объяснить мне, где проблема и как ее исправить? Большое спасибо.
Для Laravel 5,
Откройте AuthController
класс: приложение /Http/Controllers/Auth/AuthController.php
Добавьте свойство ниже в класс
protected $redirectAfterLogout = 'auth/login';
вы можете изменить auth/login
на любой URL-адрес.
Переадресация после выхода из системы жестко закодирована в признаке AuthenticatesAndRegistersUsers
. Вы можете переопределить его в AuthController
, добавив следующее:
public function getLogout()
{
$this->auth->logout();
return redirect('logout');
}
Если вы не указали атрибут $redirectAfterLogout
, он будет использовать значение по умолчанию '/'
.
Эта логика может быть найдена в этом классе: \vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php
public function logout()
{
Auth::guard($this->getGuard())->logout();
return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/');
}
Сказав это, просто добавьте этот атрибут в свой AuthController:
protected $redirectAfterLogout = '/afterRedirectURL';
В App\Controllers\Auth\AuthController добавьте следующие две переменные.
protected $redirectTo = '/private_dashboard';
protected $redirectAfterLogout = '/public_homepage';
Вы получаете идею.
У меня такая же проблема в Laravel 5.0. Переопределить метод делает трюк.
1) Перейдите в приложение /Http/Controllers/Auth/AuthController.php 2) Добавьте новый метод:
// Override Logout method (define custom url)
public function getLogout()
{
$this->auth->logout();
return redirect('auth/login'); // Your Custom URL
}
Добавьте это на свой маршрут
Маршрут:: get ('logout', function() { Auth:: выход из системы(); return redirect ('/');/Добавлена эта строка. Автомат не работает сам по себе/ });
Для Laravel 5.5 переопределить метод выхода из системы LoginController. В моем случае я переадресовываюсь на домашний маршрут после входа в систему.
/**
* Log the user out of the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function logout(Request $request)
{
$this->guard()->logout();
$request->session()->invalidate();
return redirect()->route('home');
}
it'only laravel versi 5.4, если вы хотите, чтобы пользовательский переадресация вывода URL,
открыть /your-project-laravel/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php
и отредактируйте переадресацию на основе необходимых вам
public function logout(Request $request)
{
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return redirect('/login');
}