Я создаю приложение 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
}
}
});