Laravel注销重定向无法正常工作

时间:2014-07-11 09:05:16

标签: php laravel http-redirect laravel-routing

我试图弄清楚我的控制器操作没有按预期执行重定向的原因。

当我点击我的注销操作时,它应该终止用户会话并重定向到主页,但它会重定向到管理/注销操作。

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



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



//blade
{{ HTML::linkAction('AdminController@getLogout','Logout') }}

提前感谢您的帮助。

6 个答案:

答案 0 :(得分:1)

我认为您可以使用named routes

Route::get('/', array('as' => '/', 'uses' => 'HomeController@index'));
// Replace 'index' with the method you want.

然后在你的控制器中:

return Redirect::route('/');

或者使用您当前的路线,这可能会有效:

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

答案 1 :(得分:1)

您的路线:

Route::get('/', array('as' => 'home', 'uses' => 'HomeController@index'));

然后你的刀片:

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

答案 2 :(得分:0)

试试这个:

{{ HTML::linkAction('HomeController@getLogout','Logout') }}

答案 3 :(得分:0)

Redirect::to();

和路线

Route::get('HomeController@getLogut', 'logout');

像这样链接

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

答案 4 :(得分:0)

解决方案是laravel要求用户表具有remember_token,用于避免cookie劫持。

只需在用户表中添加一个名为“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';
}

答案 5 :(得分:0)

我认为这是因为当您使用Redirect::route()时,您应该包含路线名称。请参阅Laravel API

否则,如果您仍想继续并重定向到/而不定义其路由名称。您可以使用Redirect::to()

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