Как аутентифицировать пользователей на нескольких каналах - PullRequest
0 голосов
/ 19 июня 2019

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