我正在使用laravel 4框架。当我在Auth::logout()之后使用重定向时,重定向不起作用。我也使用了View::make(),但还是出现了同样的"哇,看起来好像出了问题。"错误。
public function getLogout() {
Auth::logout();
return Redirect::to('users/login')->with('message', 'Your are now logged out!');
}
这是注销代码。我正在使用。请有人帮我做这个。
routes.php
Route::get('/', function()
{
return View::make('hello');
});
Route::controller('users', 'UsersController');
HTML
@if(!Auth::check())
<li>{{ HTML::link('users/register', 'Register') }}</li>
<li>{{ HTML::link('users/login', 'Login') }}</li>
@else
<li>{{ HTML::link('users/logout', 'logout') }}</li>
@endif
这就是我的调试器显示的内容。
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'remember_token' in 'field list' (SQL: update `users` set `updated_at` = 2014-04-23 11:30:41, `remember_token` = jSMcfpPnCPrKgwqfhB2tEEEd8h8x6d72viz67MbVzBD27A2G7AH8yWQo1ORf where `id` = 1)
您可能缺少users表的remember_token。
请参阅:http://laravel.com/docs/upgrade#upgrade-4.1.26
Laravel要求"VARCHAR(100)、TEXT或等效于用户表的可为null的remember_token。"
更新新文档
Laravel 4.2及更高版本现在有了一个方法,您可以使用您的模式生成器来添加此列。
$table->rememberToken();
Laravel文档-架构-添加列
如果你有Laravel 4.2,你可以这样做:
命令行:
php artisan migrate:make add_remember_token_to_users_table --table="users"
在此之后,打开文件app/database/migrations/2014_10_116_124421_add_remember_token_to_users_table,并按如下方式编辑:
public function up()
{
Schema::table('users', function(Blueprint $table)
{
$table->rememberToken();
});
}
public function down()
{
Schema::table('users', function(Blueprint $table)
{
$table->dropColumn('remember_token');
});
}
对于您的问题,您可以传递null值,也可以将模型php文件中的remember_token值作为
public $remember_token=false;
这里有一个示例代码,来自我如何使用Laravel 4处理系统上的注销用户。我不知道为什么你的不起作用,看看你的路线和触发注销过程的html代码会很好。
路线
Route::get('logout', array('uses'=>'UserController@logout'));
触发注销的HTML按钮/链接
<a href="{{URL::to('logout')}}" class="btn btn-danger btn-sm">Logout</a>
控制器功能处理注销
public function logout(){
Auth::logout();
return Redirect::to('login');
}
给你!您应该将其替换为您的路由名称和控制器功能。这应该有效!如果没有,发布你的路线和html代码!干杯
由于当前的Laravel更新,用户表中应该有一个"remember_token"列。这就解决了问题。
我了解到我的应用程序中出现了注销错误,因为我使用的是
Route::post('logout', array('uses' => 'SessionController@doLogout'));
只需记住使用以下内容即可。
Route::get('logout', array('uses' => 'SessionController@doLogout'));
这很顺利。
您需要将updated_at列添加到SQL表user_tbl中。如果您不想使用它,也可以关闭模型中的时间戳。