我想知道如何实现私人和在线渠道的授权,因为文档说明两者的身份验证不同。
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-channel,但是当涉及到私人通知频道时,我收到以下错误。
Pusher:错误:{“type”:“WebSocketError”,“error”:{“type”:“PusherError”,“data”:{“code”:null,“message”:“无效签名:预期的HMAC SHA256十六进制摘要52336.206126:私人通知:{\“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”}}}
答案 0 :(得分:1)
有不同的功能可以验证私有和状态通道,它们也采用不同的参数。
socket_auth($channel_name, $socket_id
应用于私人频道:https://pusher.com/docs/authenticating_users#implementing_private_endpoints/lang=wordpress presence_auth($channel_name, $socket_id, $user_id, $user_data)
应用于在线频道:https://pusher.com/docs/authenticating_users#implementing_presence_endpoints/lang=wordpress 因此,您应该检查$request->get('channel_name')
并根据private-
或presence-
的频道名称前缀使用适当的方法。这也使您有机会检查当前用户是否拥有所请求频道的权限。