[英]Token Mismatch Exception - Token changes for every call
我不知道为什么它的发生一直持续到上周。整个项目一直持续到上周。前天,我无法加载该站点,并且没有显示laravel错误。因此,请通过“ composer update”命令更新作曲家和软件包。无论我在哪里使用post方法,它都会
TokenMismatchException in VerifyCsrfToken.php line 53:
错误。
所以我改变了那个方法
<form method="get" action="{{action('SignupController@index')}}">
<input type="hidden" name="_token" value="{{csrf_token()}}">
</form>
我写在控制器像
public function index()
{
echo Session::token();
echo '<hr>';
echo Input::get('_token');
}
它给出的结果是
kJqTndLBxOhyzUZd78Zj5IG2K5VIRVwDxepreHXE
----------------------------------------
xKpqbnzb2DoRsw6ZtqTgHgcJFB9SixydkWjLhPJA
每次重新加载页面时,都会出现新令牌。我如何才能摆脱这个困境?
确保将“ web”中间件应用于您的控制器/路由。 最简单的方法是创建路由组:
Route::group(['middleware' => 'web'], function() {
// Your route definitions here.
});
“ web”中间件初始化StartSession类,从而可以保存会话。 您可以在app / Http / Kernel.php中看到它的作用。
以下是注册路线的更多可能性: https : //laravel.com/docs/5.2/middleware#registering-middleware
解决此问题“ X-CSRF-TOKEN”的方法是在主布局中添加以下代码,然后继续正常进行ajax调用:
<meta name="csrf-token" content="{{ csrf_token() }}" />
<script type="text/javascript">
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.