【问题标题】:Laravel 5 TokenMismatchException in VerifyCsrfToken.php line 46VerifyCsrfToken.php 第 46 行中的 Laravel 5 TokenMismatchException
【发布时间】:2015-08-19 17:33:42
【问题描述】:

编辑:按下登录按钮后,即使是公共/身份验证/登录,我也会收到此错误

您好,我只是想输出一个 Session::flash() 但我收到以下错误消息:

TokenMismatchException in VerifyCsrfToken.php line 46

代码如下:

public function update($id, Requests\EditPostRequest $request)
{

    $post = Post::findOrFail($id);
    $post->update($request->all());
    return redirect(route('news.edit', $id))->with('success', 'Operation successful !');
}

我认为这是:

  @if(Session::has('success'))
   <div class="alert alert-success">

    {{ Session::get('success') }}
   </div>
  @endif

我真的需要解决这个问题:/

【问题讨论】:

  • 表单中的 csrf 令牌是否用于处理帖子?
  • 我不明白你的问题
  • 在您提交用于更新的数据的表单中,您没有 csrf 输入吗? IE。类似&lt;input type="hidden" name="_token" value="{{ csrf_token() }}" /&gt;
  • 不,我没有任何看起来像 我应该将它添加到我的表单?
  • 您的脚本似乎失败了,因为它希望设置此令牌。 csrf 令牌应该防止人们提交不属于您的表单的数据或从所提供的 Web 表单之外提交。许多像 Symfony2 这样的框架会自动为你做这件事,但我假设 Laravel 期望你把它放在那里。

标签: php laravel laravel-5


【解决方案1】:

只需在表单的结束标记前添加{{ Form::token() }}

【讨论】:

  • 它不起作用..我在谷歌上看到很多人在 Windows 上的 xampp/wamp 上遇到这个问题.. 他们说最好的办法是安装宅基地,这很糟糕..
  • 我相信这只有在你安装了 Laravel Collective 的情况下才有效
【解决方案2】:

这似乎与在本地/开发环境和生产环境中使用相同的密钥有关。

不过,鉴于会话应该独立于环境,我不确定你会如何遇到冲突,但我之前正在做一些本地开发。开发中一切正常,将我的项目推送到我的另一台 PC,然后我遇到了 TokenMismatchException。

我对我的 .env 文件进行了检查,果然,我的两个环境之间的键是相同的。在我的 prod 环境中更改密钥,TokenMismatchException 立即消失。

看看你的令牌是否相同.

【讨论】:

    【解决方案3】:

    您的表单中有 CSRF 令牌吗?

    <form method="post" action="someaction">
    {{ csrf_field() }} // Generates an input field with a token
    // Other input fields
    </form>
    

    【讨论】:

      猜你喜欢
      • 2015-05-21
      • 2015-05-06
      • 2015-06-22
      • 2016-07-27
      • 2015-08-08
      • 2016-01-04
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      相关资源
      最近更新 更多