2016-02-10 80 views
1

我在我的Laravel 5.2應用程序中使用認證。一切都好,但註銷不起作用。任何人都可以向我解釋,爲什麼它發生?Laravel 5.2不能註銷

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所以這種方法不是在驗證控制器找到這麼註銷不工作。


2) 另一種方式是使用此唯一。

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

並刪除註銷方法。

Thnaks

+0

你當然對,謝謝。但是另外,這行必須是'$ this->中間件('guest',['除'=> ['logout','getLogout']]);'。 – Evgeniy

+0

然後你可以嘗試我的答案的第二個選項。希望這是工作.. –