我正在构建一个 php/javascript 应用程序,它允许每个用户连接到他们的私人频道,例如 private-channel.userID
用户通过以下身份验证端点进行身份验证,请参见下面的代码。
但是,在用户通过身份验证后,他们似乎还可以订阅其他私人频道并发送/接收消息。
例如,假设 userID 100 应该订阅 private-channel.100。在通过端点进行身份验证后,他还可以将消息发送到 private-channel.200 或其他任何 private-channel.userID !!!
无论如何,允许用户 100 仅对私人频道进行身份验证。100 并且不能订阅其他私人频道
我认为身份验证端点有问题,但无法弄清楚是什么。
非常感谢!
public function pusherAuth(Request $request){
$pusher = new Pusher(
config('broadcasting.connections.pusher.key'),
config('broadcasting.connections.pusher.secret'),
config('broadcasting.connections.pusher.app_id'),
config('broadcasting.connections.pusher.options')
);
$request->headers->set('Accept', 'application/json');
// return $pusher->socket_auth($request->channel_name, $request->socket_id);
//$channel = $request->channel_name;response()->json(
// $request->headers->set('Accept', 'application/json');
$auth = $pusher->socket_auth($request->channel_name, $request->socket_id);
$jsn = json_decode($auth,true);
// return response($auth)->header('Content-Type',"application/json");
return response()->json($jsn);
// re\turn ['auth' => $jsn->auth];
}
php客户端代码:
connectToPusher() {
this.pusher = new Pusher(window.Config.pusherKey, {
authEndpoint: '/broadcasting/auth',
cluster: window.Config.pusherCluster,
auth: {
headers: {
'X-CSRF-Token': window.Config.csrfToken
}
}
});