【问题标题】:Laravel CSRF value emptyLaravel CSRF 值为空
【发布时间】:2015-12-31 04:31:52
【问题描述】:

我正在尝试在我的 laravel 网络应用中添加 csrf 作为元标记 -

<meta name="csrf-token" content="{{ csrf_token() }}">

但我浏览时该值为空-

<meta name="csrf-token" content="">

我也尝试过添加登录表单 - 作为{!! csrf_filed() !!}

<input type="hidden" name="_token" value="{{ csrf_token() }}">

但在这两种情况下,值都是空的。 我在前端使用 Angularjs,它与它有什么关系吗?

【问题讨论】:

  • 这样写: 看看值
  • CSRF 令牌存储在会话中,检查会话存储是否配置良好
  • @vikrammistry 我试过同样的结果可能是会话存储问题。但是如何检查呢?
  • 你不需要为 AngularJS 设置 CSRF 令牌,因为从 Laravel 5.0 开始它会自动设置 X-CSRF-TOKEN,它被 Laravel 使用而不是 CSRF 令牌。你可以在这里查看更多信息 - laravel.com/docs/5.2/routing#csrf-x-csrf-token
  • @naneri 是的,我看到了,但是有什么方法可以验证吗?我的意思是我想检查是否在每个 Ajax 请求中都验证了 csrf 令牌。

标签: php angularjs laravel-5.1


【解决方案1】:

将你的路由放在路由组“中间件”中:

Route::group(['middleware' => ['web']], function () {

    // your routes here

});

然后运行这个:

php artisan key:generate

【讨论】:

    【解决方案2】:

    如果我们在404 页面中,我们也会在csrf_token 中获得空值。这通常发生在您尝试执行注销操作时,表单位于 header.blade.php 并且我们正在访问 404 页面。尝试返回索引页面,看看csrf_token 是否仍然为空。

    【讨论】:

      【解决方案3】:

      对我来说,我试图通过手动刷新会话来处理过期的页面。当我从控制器刷新会话并检查 html 表单时,我得到了空的 _token 值,当从控制器中删除会话刷新代码时它工作正常。同样在文档中,它声明将为活动用户生成 csrf,当会话过期或刷新时,将生成空值。对于一些极客来说,不使用上面答案中提到的中间件网络也是如此。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-19
        • 2021-12-31
        • 1970-01-01
        • 2014-02-04
        • 2016-05-14
        • 2014-05-17
        • 2018-05-27
        • 1970-01-01
        相关资源
        最近更新 更多