繁体   English   中英

令牌不匹配异常-每个呼叫的令牌更改

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM