Php 注销不工作时的Laravel重定向

Php 注销不工作时的Laravel重定向,php,authentication,redirect,laravel,laravel-4,Php,Authentication,Redirect,Laravel,Laravel 4,我使用的是Laravel4框架。在Auth::logout()之后使用重定向时,重定向不起作用。我也使用了View::make(),但同样的“哎呀,好像出了什么问题。”错误出现了 public function getLogout() { Auth::logout(); return Redirect::to('users/login')->with('message', 'Your are now logged out!'); } 这是注销代码。我正在使用。请找个人帮我

我使用的是Laravel4框架。在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

下面是我如何使用Laravel4在系统上处理注销用户的示例代码。我不知道为什么你的工作不正常,如果能看到你的路线,以及触发注销过程的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代码!干杯

您可能缺少users表的remember_标记

见:

Laravel需要“VARCHAR(100)的可空记忆体标记、文本或与您的用户表等效的内容。”

更新新文档

Laravel4.2及以上版本现在有了一种方法,您可以使用模式生成器添加此列

$table->rememberToken()


由于当前的Laravel更新,用户表中应该有一个“记住令牌”列。这就解决了问题。

我了解到我的应用程序中出现注销错误,因为我正在使用

Route::post('logout', array('uses' => 'SessionController@doLogout'));
只需记住使用以下内容即可

Route::get('logout', array('uses' => 'SessionController@doLogout'));

这很顺利。

如果您有Laravel 4.2,您可以执行以下操作:

命令行:

php artisan migrate:make add_remember_token_to_users_table --table="users"
在此之后,打开文件app/database/migrations/2014_10_16_124421_将_memory_token_添加到_users_表中,并按如下方式编辑它:

public function up()
{
    Schema::table('users', function(Blueprint $table)
    {
        $table->rememberToken();
    });
}

public function down()
{
    Schema::table('users', function(Blueprint $table)
    {
        $table->dropColumn('remember_token');
    });
}

您需要将更新的_at列添加到SQL表用户_tbl中。如果你不想使用它。您还可以关闭模型中的时间戳。

对于您的问题,您可以传递null值,或者在模型php文件中关闭memory_标记值,如下所示:

public $remember_token=false;

你能告诉我路线吗?
users.login
视图是否存在?因为您的代码看起来与我的注销方法非常相似……为了在您的开发机器上显示有用的调试信息,您应该向
app/config/app.php'
(或
app/config/local/app.php'
)添加
'debug'=>true'
)和/或将您的开发机器的主机名添加到
bootstrap/start.php
中的环境数组中。有关详细信息,请查看。@pc shooter是,该视图存在。重定向在没有Auth::logout()的情况下可以正常工作看看Quasdunk的comment@winnyboy5总是乐于提供帮助:)还要确保为您的生产环境禁用任何类型的直接调试输出(您应该记录它),这样您的用户只会看到“哎哟,看起来好像是出了什么问题,而不是一些敏感数据。不,它不起作用。我认为问题在于getLogout功能太棒了!很高兴你修好了!干杯如果更详细的话,您必须编辑迁移文件并添加:$table->text('memory_token')->nullable();然后重新运行迁移可以像使用时间戳一样自动完成吗?($table->timestamps();)@TomBusby实际上Laravel 4.2的文档现在已经有了这个令牌的方法$表->记忆库();以前有过这个问题。文件没有明确说明该方法适用于4.2及以上版本。我试图在4.1.26中使用它,“migrate:make”是错误的,我们需要键入“make:migration”。谢谢你的回答。
public $remember_token=false;