如何解决Laravel 5 App

时间:2016-06-09 05:24:24

标签: laravel-5.1

我已经开发了一个laravel 5 app并且一切正常,除了我在VerifyCsrfToken.php第53行中获得TokenMismatchException。我似乎无法弄清楚原因。这主要发生在登录期间。我使用laravel内置特性来实现身份验证。以下是我的示例注销方法。

public function getLogout()
    {
        Auth::logout();
        Session::forget('cart_id');
        Session::forget('is_supervisor');
        Session::forget('is_manager');
        return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/');
    }

每次发生异常时,我都必须重新加载页面并在此工作之前再次登录。以下是我的登录表单示例:

{!! Form::open(array('class' => 'form-horizontal', 'role' => 'form')) !!}
     <div class="form-group">
         {!! Form::label('username', trans('home.username'), array('class' => 'col-sm-3 control-label')) !!}
             <div class="col-sm-9 col-lg-5">
                {!! Form::text('username', null, array('required' => 'required', 'class' => 'form-control input-sm')) !!}
                        </div>
          </div>
{!! Form::close() !!}

当我检查页面源时,csrf令牌始终可用。可能是什么问题。我在.env。

中使用laravel 5.1。*和SESSION_DRIVER =文件

修改

//认证路由......

Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');

1 个答案:

答案 0 :(得分:0)

CSRF保护(跨站点请求伪造)可以帮助您避免对Web应用程序执行不必要的操作。 呈现表单时生成令牌,并在一段时间后过期。 如果您打开的表单太长,则会出现TokenMismatchException。

重新加载页面(表单)后不久就注意到了这个问题吗?

尝试添加 {{ csrf_field() }}到您的表单并检查它是否有帮助。