Intereting Posts
передать массив из jQuery в PHP (и фактически перейти на страницу после отправки) ограничить доступ к странице только разрешенным с определенной страницы Codeigniter $ this-> db-> get (), как мне вернуть значения для определенной строки? Как определить, перенаправляется ли URL на PHP? Получение всех узлов с тем же именем с использованием xpath для XML-файла BMECAT? PHP – Как заменить фразу на другую? fb ошибка входа – токен состояния CSRF не соответствует одному предоставленному Отображение содержимого строк mysql в таблице html с использованием php PHP Regex для строки с буквенно-цифровыми и специальными символами Как изменить значение конкретного ассоциативного массива в PHP? Каковы некоторые хорошие ресурсы, которые помогут мне внедрить поддержку Kerberos A & A в PHP? html-страница не получает файлы cookie через libcurl PHP – нужен cron для обработки обратного сайта при регистрации пользователя … (или процесс fork) Ограничение (поиск) отправителем mysql Выберите один столбец дважды из той же таблицы с разными датами в предложении where

Laravel 5.2: Auth :: logout () не работает

Я создаю очень простое приложение в Laravel 5.2, но при использовании действия AuthController для выхода из системы это просто не работает. У меня есть панель навигации, которая проверяет Auth::check() и она не изменяется после вызова действия выхода из системы.

У меня есть этот маршрут внутри файла routes.php:

Route::get('users/logout', 'Auth\AuthController@getLogout');

и это вне

Route::group(['middleware' => ['web']], function () оператор Route::group(['middleware' => ['web']], function () .

Я также попытался добавить следующее действие в конец файла AuthController.php.

 public function getLogout() { $this->auth->logout(); Session::flush(); return redirect('/'); } из public function getLogout() { $this->auth->logout(); Session::flush(); return redirect('/'); } 

У тебя есть идеи?

ИЗМЕНИТЬ 1

Если я удалю кеш Google Chrome, он работает.

У меня также была аналогичная проблема в Laravel 5.2. Вы должны изменить свой маршрут на

 Route::get('auth/logout', 'Auth\AuthController@logout'); 

или в конструкторе AuthController add

 public function __construct() { $this->middleware('guest', ['except' => ['logout', 'getLogout']]); } 

Это сработало для меня.

используйте ниже код

 Auth::logout(); 

или

 auth()->logout(); 

Проблема связана с промежуточным ПО «guest» в конструкторе AuthController. Он должен быть изменен из $this->middleware('guest', ['except' => 'logout']); в $this->middleware('guest', ['except' => 'getLogout']);

Если вы проверите файл ядра, вы увидите, что ваше промежуточное ПО для вашего гостя указывает на \App\Http\Middleware\RedirectIfAuthenticated::class

Это промежуточное программное обеспечение проверяет подлинность пользователя и перенаправляет пользователя на корневую страницу, если оно завершено, но позволяет пользователю выполнить действие, если оно не завершено. Используя $this->middleware('guest', ['except' => 'getLogout']); , промежуточное программное обеспечение не будет применяться при вызове функции getLogout, тем самым позволяя аутентифицированным пользователям использовать его.

N / B: Как и в исходном ответе, вы можете изменить getLogout на logout поскольку метод getLogout просто возвращает метод выхода из системы в реализацию laravel.

В Http->Middleware->Authenticate.php измените login в инструкции else в /

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

и определите следующий маршрут в routes.php

 Route::get('/', function () { return view('login'); }); 

для функции выхода из системы:

 public function getlogout(){ \Auth::logout(); return redirect('/home'); } из public function getlogout(){ \Auth::logout(); return redirect('/home'); } 

Важно: перенаправить на /home вместо / который сначала вызывает $this->middleware('auth'); а затем в промежуточном программном обеспечении перенаправление на /

Это должно быть содержание вашего конструктора в AuthController

 $this->middleware('web'); $this->middleware('guest', ['except' => 'logout']); 

добавьте эту строку в файл route.php Route :: get ('auth / logout', 'Auth \ AuthController @ getLogout'); и добавьте это, на ваш взгляд, href = "{{url ('/ auth / logout')}}"> Выход из системы работает отлично для меня

Просто добавьте ниже маршрут и не добавляйте его внутри любой группы маршрутов (промежуточное ПО):

 Route::get('your-route', 'Auth\AuthController@logout'); 

Теперь выход из системы должен работать так, как в L 5.2, без изменения чего-либо в AuthController .

 /** * 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()->flush(); $request->session()->regenerate(); return redirect('/'); } /** * Get the guard to be used during authentication. * * @return \Illuminate\Contracts\Auth\StatefulGuard */ protected function guard() { return Auth::guard(); } из /** * 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()->flush(); $request->session()->regenerate(); return redirect('/'); } /** * Get the guard to be used during authentication. * * @return \Illuminate\Contracts\Auth\StatefulGuard */ protected function guard() { return Auth::guard(); }