2014-07-11 100 views
0

我試圖找出爲什麼我的控制器操作沒有執行像預期的重定向的原因。Laravel註銷重定向不工作

當我單擊我的註銷操作時,它應該終止用戶會話並重定向到主頁,但它將重定向到管理員/註銷操作。

//controller 
public function getLogout() 
{ 
    Auth::logout(); 
    return Redirect::route('/'); 
} 



//routes 
Route::controller('admin', 'AdminController'); 
Route::controller('/', 'HomeController'); 



//blade 
{{ HTML::linkAction('[email protected]','Logout') }} 

感謝您的幫助提前。

回答

0

解決方法是,laravel需要用戶表擁有一個用於避免cookie劫持的remember_token。

只需在名爲「remember_token」的用戶表中添加一個可爲空的100字符字段並運行遷移即可。

在默認用戶模型中會看到一個很好的提示,因爲該字段已經定義。

瞭解詳情,請查看鏈接:http://laravel.com/docs/upgrade#upgrade-4.1.26

public function getRememberToken() 
{ 
    return $this->remember_token; 
} 

public function setRememberToken($value) 
{ 
    $this->remember_token = $value; 
} 

public function getRememberTokenName() 
{ 
    return 'remember_token'; 
} 
1

我想你可以使用named routes

Route::get('/', array('as' => '/', 'uses' => '[email protected]')); 
// Replace 'index' with the method you want. 

然後在你的控制器:

return Redirect::route('/'); 

或與當前的路線,這可能工作:

// Define the route 
Route::controller('/', 'HomeController'); 
// Controller 
return Redirect::to('/'); 
0
Redirect::to(); 

和路線

Route::get('[email protected]', 'logout'); 

鏈接這樣

<a href="/logout">Logout</a> 
1

您的路線:

Route::get('/', array('as' => 'home', 'uses' => '[email protected]')); 

然後刀片:

{{ link_to_route('home','Home')}} 
0

我認爲這是因爲當你使用Redirect::route()你應該包括路由名稱。請參閱Laravel API

否則,如果您仍然想要轉到/而不定義其路由名稱。您可以改爲使用Redirect::to()

public function getLogout() 
{ 
    Auth::logout(); 
    return Redirect::to('/'); 
}