我已经开发了一个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');
答案 0 :(得分:0)
CSRF保护(跨站点请求伪造)可以帮助您避免对Web应用程序执行不必要的操作。 呈现表单时生成令牌,并在一段时间后过期。 如果您打开的表单太长,则会出现TokenMismatchException。
重新加载页面(表单)后不久就注意到了这个问题吗?
尝试添加
{{ csrf_field() }}
到您的表单并检查它是否有帮助。