laravel - 获取 403,使用 laravel 广播的私人频道时出错
问题描述
无法在我的聊天应用程序中对用户进行身份验证。我从控制台收到 403 错误。虽然当我使用私人频道时会发生这种情况,但是当使用公共频道时,这真的很好,但我绝对只想要经过身份验证的用户。它更像是一个水疗中心,因此几乎所有事情都使用 axios,包括对 laravel 的用户身份验证请求。下面是我的代码:
广播服务提供者:
` public function boot()
{
Broadcast::routes();
require base_path('routes/channels.php');
}`
频道.php:
`Broadcast::channel('App.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
Broadcast::channel('chat', function ($user) {
return Auth::check();
});
`
听来自 vue 组件的指令:
`Echo.private('chat')
.listen('.App\\Events\\Chats\\MessageSent', (e) => {
console.log(e);
this.sentMessages.push({
message: e.message.message,
user: e.user
});
`
消息发送事件:
` public function broadcastOn()
{
return new PrivateChannel('chat');
}
`
现在使用 vue-echo 包装器,但我仍然遇到了这个问题,我还没有弄清楚我错过了什么
解决方案
这基本上就像错误所暗示的那样,是一个身份验证问题,我在我的应用程序中使用令牌进行身份验证,但现在还需要将此令牌传递给用户以及 vue-echo。
并且还要改变:
Broadcast::routes();
至
Broadcast::routes(['middleware' => ['auth:api']]);
因为我正在创建一个单页应用程序,因此使用 axios 进行身份验证,因此使用 api 中间件向我解释。
在Alex 提供的关于“Laravel /broadcasting/auth Always Fails With 403 Error”问题的答案的指导下, 您可以在那里获得更多详细信息。
谢谢大家。
推荐阅读
- python - 过滤和排序列表
- javascript - vue-test-utils:在 v-select 的测试中未捕获更改事件
- android - org.qtproject.qt5.android.QtNative.handleOrientationChanged 中的 java.lang.UnsatisfiedLinkError
- docker - 脚本无法运行 docker-compose 和 ./asadmin start-domain domain1
- react-native - 播放过程中遇到致命错误,使用 expo-video-player 库
- python - 如何使用 OOP 概念在 Tkinter 中添加背景图像?
- c - 使用 c-lib 函数 qsort 时如何删除“不兼容的函数指针类型”警告
- discord.js - 我需要帮助解决这个机器人无法打开的问题吗?
- firebase - 将 Firebase 与 Touchdesigner 关联
- javascript - 无法从 MusixMatch API 获取数据获取“请求的资源上不存在“没有 'Access-Control-Allow-Origin' 标头。”错误