You need to enable JavaScript to run this app. Laravel使用Pusher/WebSockets请求/broadcasting/auth返回403错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Laravel使用Pusher/WebSockets请求/broadcasting/auth返回403错误如何解决

403报错排查及解决方案

核心问题梳理

你遇到的/broadcasting/auth接口403错误,本质是客户端加入私有/在线频道时服务端鉴权失败,结合你提供的代码,存在以下明确问题:

  • 你调用Echo.join('chat')使用的是presence在线频道,但routes/channels.php中仅定义了默认的用户私有频道规则,没有声明chat频道的鉴权逻辑,服务端匹配不到对应频道的校验规则直接返回403。
  • 常见遗漏配置还包括:未开启广播服务提供者、广播路由鉴权中间件不匹配、Token无效、配置项冲突。

分步解决方案

1. 补充chat频道鉴权规则

在routes/channels.php中新增以下代码,presence频道需要返回包含用户公开信息的数组,可根据业务调整权限判断条件:

<?php
use Illuminate\Support\Facades\Broadcast;

// 原有用户私有频道保留
Broadcast::channel('App.Models.User.{id}', function ($user, $id) {
    return (int) $user->id === (int) $id;
});

// 新增chat在线频道鉴权
Broadcast::channel('chat', function ($user) {
    // 示例:只要是已登录用户就允许加入,返回的数组会同步给频道内其他客户端
    return [
        'id' => $user->id,
        'name' => $user->name
    ];
});

2. 开启广播服务提供者

打开config/app.php,找到providers数组,取消BroadcastServiceProvider的注释:

'providers' => [
    // 其他提供者...
    App\Providers\BroadcastServiceProvider::class, // 确保这行没有被注释
],

3. 调整广播路由鉴权中间件

打开app/Providers/BroadcastServiceProvider.php,修改boot方法,指定用API Token对应的中间件做鉴权:

public function boot()
{
    // 适配你用Bearer Token鉴权的逻辑,指定auth:api中间件
    Broadcast::routes(['middleware' => ['auth:api']]);
    
    require base_path('routes/channels.php');
}

4. 修正配置冲突

打开config/broadcasting.php,将pusher连接下的useTLS改为false,和你本地HTTP协议的配置匹配:

'options' => [
    'cluster' => env('PUSHER_APP_CLUSTER'),
    'useTLS' => false, // 原来为true,本地无HTTPS时改为false
    'host' => '127.0.0.1',
    'port' => 6001,
    'scheme' => 'http',
    'curl_options' => [
        CURLOPT_SSL_VERIFYHOST => 0,
        CURLOPT_SSL_VERIFYPEER => 0,
    ]
],

5. 校验Token有效性

确认localStorage中存储的token未过期、是后端生成的合法API Token,可先通过Postman携带该Token发送POST请求到/broadcasting/auth,参数传入channel_name=chat和任意socket_id,验证接口是否正常返回鉴权数据。


内容的提问来源于stack exchange,提问作者Belhaj-rbg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 15:06:04