【问题标题】:Pusher, Different auth for presence and private?Pusher,存在和私人的不同身份验证?
【发布时间】:2015-10-28 16:00:30
【问题描述】:

我想知道如何为 Private 和 Presence 通道实现授权,因为文档指出两者的身份验证不同。

https://pusher.com/docs/authenticating_users#implementing_private_endpoints

我目前在 Laravel 的认证过程是这样的

public function auth(PusherManager $pusher, Request $request)
{
    if(Auth::check())
    {
        echo $pusher->presence_auth('presence-channel', $request->get('socket_id'), Auth::user()->id, Auth::user());
    }
}

我正在按如下方式初始化通道

var pusher = new Pusher('7c1df2e41d3c474d369d');
var presenceChannel = pusher.subscribe('presence-channel');
var notificationChannel = pusher.subscribe('private-notifications-' + me.id);

这适用于 Presence 频道,但是当涉及到私人通知频道时,我收到以下错误。

Pusher:错误:{"type":"WebSocketError","error":{"type":"PusherError","data":{"code":null,"message":"无效签名:预期的 HMAC SHA256 十六进制摘要 52336.206126:private-notifications:{\"user_id\":1,\"user_info\":{\"id\":1,\"name\":\"Miguel Stevens\",\"email \":\"miguel@clouddesign.be\",\"created_at\":\"2015-08-04 20:45:41\",\"updated_at\":\"2015-08-04 20:45 :41\"}},但得到 c880aa8f9d1337e4972fde05ae76148cd9a2a91e636d4714efbac2dff6d27f4b"}}}

【问题讨论】:

    标签: javascript php laravel pusher


    【解决方案1】:

    有不同的函数来验证私有和在线通道,它们也采用不同的参数。

    因此,您应该检查$request->get('channel_name') 并根据private-presence- 的频道名称前缀使用适当的方法。这也让您有机会检查当前用户是否拥有所请求频道的权限。

    【讨论】:

    • 感谢您的清晰解释! Pusher 网站上的 PHP 示例中并不清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 2013-06-02
    • 2021-08-26
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    相关资源
    最近更新 更多