【问题标题】:/broadcasting/auth endpoint always fails with 403 (access denied) error when trying to authenticate with Sanctum/broadcasting/auth 端点在尝试向 Sanctum 进行身份验证时总是失败并出现 403(拒绝访问)错误
【发布时间】:2020-06-09 21:31:05
【问题描述】:

我找不到太多关于使用 Sanctum 专门验证广播的答案。我正在尝试实现一个向推送者广播的基本事件,但在尝试连接到 /broadcasting/auth 时,我不断收到 403 错误。首先,是的,我取消了 /config/app.php 中的 BroadcastServiceProvider 的注释。这是我的广播服务提供商的摘录:

app/Providers/BroadcastServiceProvider.php

class BroadcastServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Broadcast::routes(['middleware' => ['auth:sanctum']]);

        require base_path('routes/channels.php');
    }
}

我使用 Sanctum 进行身份验证,我的所有端点都位于 api.php 文件中。我不确定我是否应该在那里声明Broadcast::routes,因为我已经看到一些人提到它,但我真的不知道它有什么区别,因为它仍然给我同样的错误。我什至不知道在这里调用 auth:sanctum 中间件是否有效。我的意思是,我知道它适用于我所有的 api 路由,但我不确定在这个 Provider 文件中。

我正在尝试使用 Postman 访问 /broadcasting/auth 端点,同时在请求中包含我的 Sanctum Authorization 标头(Bearer [token]),但它只给了我一个 403。 p>

有人可以在这里指出正确的方向吗?

【问题讨论】:

  • 如果你删除这个“['middleware' => ['auth:sanctum']]”,就不再是 403 了吗?

标签: php laravel broadcasting


【解决方案1】:

我也遇到了类似的问题,但我能够通过在路由目录内的 channel.php 文件中添加我正在广播的频道来解决它。

channel.php

Broadcast::channel('request_channel.{device_id}', function ($user, $device_id) {
    return (int) $user->id === (int) \App\UserDevice::find($device_id)->user_id;
});

【讨论】:

    猜你喜欢
    • 2017-06-03
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2019-09-30
    • 2015-01-05
    • 2010-09-10
    相关资源
    最近更新 更多