2016-02-10 4 views
1

Я использую аутентификацию в своем приложении Laravel 5.2. Все нормально, но выход из системы не работает. Может ли кто-нибудь объяснить мне, почему это произошло?Laravel 5.2 not logout

routes.php

Route::group([ 

    'middleware' => ['web'] 

], function() { 

     Route::get('auth/login', 'Auth\[email protected]'); 
     Route::post('auth/login', 'Auth\[email protected]'); 
     Route::get('auth/logout', 'Auth\[email protected]'); 
     ... 
}); 

Controller.php

class AuthController extends Controller 
{ 
    use AuthenticatesAndRegistersUsers, ThrottlesLogins; 

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

    public function logout() 
    { 
     /* This place not trigger */ 
     echo 'Logout'; 
     exit; 

     Auth::guard($this->getGuard())->logout(); 

     return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/'); 
    } 
    ... 
} 

ответ

3

Надежда это работа

Вы допустили ошибку в имени метода контроллера.

1)

public function logout() 

Заменить с этим методом

public function getLogout() 

Пояснение ----------------------- -----------------

В пути вы использовали следующий маршрут

Auth\[email protected] 

И вы использовали следующий способ

public function logout() 

имя метода является только выход из системы и маршрут имеет getLogout поэтому этот метод не нашел в контроллере Auth так выход из системы не работает.


2) Другой способ использовать это только.

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

И удалить метод выхода из системы.

Thnaks

+0

Вы, конечно, конечно, спасибо. Но некоторые дополнения, эта строка должна быть такой, как '$ this-> middleware ('guest', ['except' => ['logout', 'getLogout']]);'. – Evgeniy

+0

Тогда вы можете попробовать второй вариант моего ответа. Надеюсь, это работа. –

Смежные вопросы