【问题标题】:CSRF token mismatch larave-echo-server with nuxtCSRF 令牌不匹配 larave-echo-server 与 nuxt
【发布时间】:2020-03-30 22:20:53
【问题描述】:

我在 nuxt 和 laravel 中使用 laravel-echo-server 进行实时应用

当我使用它时

window.Echo.channel(`laravel_database_test-channel`).listen(
        "TestEvent",
        e => {
          console.log(e);
        }
      );

一切正常

但是当我在这样的私人频道中尝试时

window.Echo.private(`laravel_database_test-channel`).listen(
        "TestEvent",
        e => {
          console.log(e);
        }
      );

收到错误"message": "CSRF token mismatch."

这是完整的截图

【问题讨论】:

  • 你也把它设置为后端的私人频道了吗?
  • 是的return new PrivateChannel('test-channel');
  • 听起来很愚蠢,但您确实将 csrf 令牌附加到请求中,对吧?私人频道也确实需要身份验证中间件,如果不通过身份验证,您将无法使用私人频道

标签: laravel websocket nuxt.js laravel-6


【解决方案1】:

转到 App\Providers\BroadcastServiceProvider 修改这个

Broadcast::routes();

Broadcast::routes(['prefix' => 'api', 'middleware' => ['auth:api']]);

在你的laravel-echo-server.json

编辑这个

"authEndpoint": "/api/broadcasting/auth",

这对我有帮助并且工作正常

【讨论】:

  • 谢谢,它有效!对我来说,不需要前缀,也不需要在 BroadcastServiceProvider 级别设置 auth:api,而是在单独的 routes/channels.php 中设置 ['guards' => ['api']]
猜你喜欢
  • 2021-08-18
  • 1970-01-01
  • 2019-02-27
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
  • 2020-07-08
  • 2016-12-10
相关资源
最近更新 更多