Laravel使用Pusher私有频道推送时localhost认证失败开发服务器正常
问题根因
/broadcasting/auth 404错误核心是localhost对应的站点未正确开启Laravel广播路由,加上现有代码存在事件广播频道与监听频道不匹配、事件构造函数赋值错误的问题,Laravel自带的php artisan serve开发服务器默认配置隐式兼容了部分配置,所以127.0.0.1:8000访问时没有报错。
修复步骤
1. 开启广播服务提供者
打开config/app.php,找到providers配置数组,取消如下条目注释:
App\Providers\BroadcastServiceProvider::class,
手动开启后才会注册广播相关路由,解决Nginx/Apache部署的localhost站点路由404问题。
2. 修复代码逻辑错误
修正事件构造函数赋值逻辑
原Events/ReportNotification的构造函数写反了赋值方向,修改为:
public function __construct($message) { $this->message = $message; }
统一广播频道与监听频道
原事件的广播频道为notification,但前端监听、频道配置都是按用户私有频道App.Models.User.{id}实现的,修改事件的broadcastOn方法:
public function broadcastOn($notifiable) { return new PrivateChannel('App.Models.User.'.$notifiable->id); }
3. 适配站点路径配置
如果localhost站点未直接指向Laravel项目的public目录,而是部署在子目录下,需要在Echo配置处手动指定认证地址:
window.Echo = new Echo({ broadcaster: 'pusher', key: import.meta.env.VITE_PUSHER_APP_KEY, cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER, forceTLS: true, authEndpoint: 'http://localhost/broadcasting/auth' });
4. 清空配置缓存
执行命令清理旧缓存:
php artisan config:clear php artisan route:clear
修复完成后重新访问localhost即可正常接收通知。
内容的提问来源于stack exchange,提问作者Mrh Bappy
相关产品推荐
相关产品推荐

