首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >广播频道不工作的Laravel授权

广播频道不工作的Laravel授权
EN

Stack Overflow用户
提问于 2018-01-17 23:52:10
回答 1查看 1K关注 0票数 6

我正在尝试使用Laravel 5.4 (后端)和Angular 2(前端)将聊天集成到一个and应用程序中。我有一个向用户发送消息的唯一广播频道。每个用户都有自己的频道,这个频道是chat-{uuid},其中uuid是聊天表中的一个惟一ID,该表还存储了可以访问该频道的用户的userID。问题是永远不会调用授权回调,因此任何知道uuid的用户都可以访问该通道。我不确定我做错了什么

channels.php

代码语言:javascript
复制
// This authorization is never called 
Broadcast::channel('chat-{uuid}', function ($user, $uuid) {
    return false; 
});

NewMessage.php事件

代码语言:javascript
复制
protected     $message;

public function __construct($message)
{
    $this->message = $message;
}

protected function prepareData()
{
    return [
        'chatID'                => $this->message->chatID,
        'userID'                => $this->message->builderID,
        'message'               => $this->message->message,
        ];

}

public function broadcastWith()
{
    return [
        'message' => $this->prepareData(),
    ];
}

public function broadcastAs()
{
    return 'new.message';
}

public function broadcastOn()
{
    return new PrivateChannel('chat-'.$this->message->chatID);
}

BroadcastServiceProvider.php

代码语言:javascript
复制
public function boot()
{
    Broadcast::routes( [ 'middleware' => [ 'api', 'auth.jwt' ] ] );
    require base_path('routes/channels.php');
}

连接到前端的宽频频道(正在接收消息)

Component.ts

代码语言:javascript
复制
  window['Echo'] = new Echo({
    broadcaster: 'socket.io',
    host: 'http://app.test:6001',
    auth:
      {
        headers:
          {
            'Authorization': 'Bearer ' + this.auth.jwt
          }
      }
  });

window['Echo'].private(`chat-${this.chatUUID}`)
  .listen(".new.message", (data) => {
    this.messages.data.push(data.message);
  });
EN

回答 1

Stack Overflow用户

发布于 2019-07-30 19:33:35

显然,问题不在编程方面,而是与您的web服务器配置(或web套接字服务器)有关。我认为你总是得到私有通道的身份验证,但不是通过简单的/broadcusting/auth,因为响应会给你200个代码。正如您在laravel-echo-server sourse通道中看到的,剩余地获取身份验证。因此,您的routes/channels可能不会参与此过程。此外,如果您将BroadcastServiceProvider排除在配置之外,那么您可能会得到私有通道的身份验证。

如果一切都是这样,我建议看看web服务器的配置,特别是当你使用SSL、Alternative SSL implementationlaravel-echo-server.json的时候。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48305039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档