【发布时间】:2016-12-26 13:29:02
【问题描述】:
我有一个问题似乎在 Laravel 中再次出现,但我无法解决它。尝试使用我的表单登录时出现异常
TokenMismatchException in VerifyCsrfToken.php line 67:
我的代币是
57APQblkHvu9zZAMEdLYqQ1EwhPgZZtv4xEAYqmG // RequestbyHXGzrMeMQGPtIBWo6FCgdKyXl2GkiekQk8IEND // Session
但是为什么它们不同呢?我的登录表单看起来像这样,并且是视图上唯一的 HTML 代码。
<form method="post" action="{{ route('login.do') }}">
<input type="submit" value="Login with Spotify">
{{ csrf_field() }}
</form>
我尝试了什么
使用<input type="hidden" name="_token" value="{{ csrf_token() }}"> 代替字段。
使用 {!! csrf_field() !!} 代替 {{ csrf_field() }}
将我所有的路由分组到 web 中间件中
<?php
Route::group(['middleware' => ['web']], function () {
Route::get(
'/',
[
'as' => 'start',
'uses' => 'HomeController@index'
]
);
Route::get(
'/login',
[
'as' => 'login.show',
'uses' => 'AuthenticationController@login'
]
);
Route::post(
'/login',
[
'as' => 'login.do',
'uses' => 'AuthenticationController@doLogin'
]
);
});
但只要我在login.blade.php(GET 请求),然后按提交登录,我就会收到上述异常。
【问题讨论】:
-
您使用的是什么会话驱动程序?
-
我使用
file进行会话和缓存。我什至用rm -f storage/framework/sessions/*删除了会话缓存 -
您在渲染的 html 中看到
_token字段了吗?你能把这个也发一下吗? -
请检查视图中的 csrf 令牌: 另外,请确保您拥有 .使用密钥解决的 env 文件:php artisan key:generate
-
我在 HTML 中看到了令牌。这是请求中的那个。我还有一个带有 generate 的键集
标签: php laravel laravel-5.2 csrf