laravel reactjs толкатель: ответ канала присутствия равен 302 - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь создать приложение reactjs, в котором пользователь может одновременно входить только на одно устройство с одинаковыми учетными данными. К сожалению, это не работает.

Я пытаюсь аутентифицировать канал присутствия с reactjs до laravel, но я получаю ответ 302.

reactjs:

    Pusher.logToConsole = true;

    var pusher = new Pusher("9028d58568392772df59", {
        cluster: "eu",
        forceTLS: true,
        authEndpoint: '/broadcasting/auth',
        auth: {
            headers: {
              'X-CSRF-Token': csrf_token
            }
          }
    });

    var channel = pusher.subscribe("presence-HandleCredentials");
    channel.bind("sameCredentials", function(data) {
        console.log(data);
        alert(JSON.stringify(data));
    });

канал:

Broadcast::channel('App.User', function ($user, $id = 1) {
    return (int) $user->id === (int) $id;
});

трансляция:

    public function boot()
    {
        Broadcast::routes(['middleware' => ['auth:web']]);

        require base_path('routes/channels.php');
    }

Когда я добавил это ['middleware' => ['auth: web']], я получил ошибку , Прежде чем я добавил, что я получил ошибку 403.

в config \ app. php Я раскомментировал App\Providers\BroadcastServiceProvider::class,

Есть ли какие-нибудь учебники, которые собираются с laravel и reactjs для канала присутствия? Кто-нибудь знает, как пройти этот редирект 302?

1 Ответ

0 голосов
/ 06 апреля 2020

Недавно возникла та же проблема с моими laravel -websockets и laravel echo. В моем случае я не смог решить 302, так как Broadcast не смог аутентифицировать моего авторизованного пользователя. Я пытался подписаться на мой частный канал. Таким образом, я нашел обходной путь: я вручную создал POST-маршрут в сети. php как "/ broadcasting / auth". Это то, к чему просит мой интерфейс. Итак, обновленный код в сети. php выглядит следующим образом.

Route::post('/broadcasting/auth', function(Request $request){
$pusher = new Pusher\Pusher(
    env('PUSHER_APP_KEY'),
    env('PUSHER_APP_SECRET'),
    env('PUSHER_APP_ID'),
    array(
        'cluster' => env('PUSHER_APP_CLUSTER'),
        'useTLS' => false,
        'host' => env('APP_URL'),
        'port' => 6001,
        'scheme' => 'http',
    )
);
return $pusher->socket_auth($request->request->get('channel_name'),$request->request->get('socket_id'));

});

Я создавал свой собственный веб-сокет, поэтому я должен был упомянуть хост и порт в варианты, вам не нужно использовать его, если вы используете толкатель. Вы также можете добавить другие промежуточные программы к маршрутам, если это необходимо. Вы должны закомментировать следующую строку в app / provider / BroadcastServiceProvider :

public function boot()
{
    // Broadcast::routes();
    require base_path('routes/channels.php');
}

, чтобы запрос мог достичь моего маршрута broadcasting / auth в сети. php.

Попробуйте это. теперь это должно возвращать 200, когда ваша клиентская сторона запрашивает широковещание / авторизацию с ответом кода авторизации. Дайте мне знать, если это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...