我试图弄清楚我的控制器操作没有按预期执行重定向的原因。
当我点击我的注销操作时,它应该终止用户会话并重定向到主页,但它会重定向到管理/注销操作。
//controller
public function getLogout()
{
Auth::logout();
return Redirect::route('/');
}
//routes
Route::controller('admin', 'AdminController');
Route::controller('/', 'HomeController');
//blade
{{ HTML::linkAction('AdminController@getLogout','Logout') }}
提前感谢您的帮助。
答案 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('/');
}