Laravel Echo + Pusher: запрос на трансляцию/авторизацию возвращает страницу входа

Я обновил свое приложение с 5.2 до 5.3, чтобы передавать уведомления с помощью Pusher, но когда pusher пытается аутентифицировать текущего вошедшего в систему пользователя через broadcasting/auth, я получаю сообщение об ошибке:

Pusher : No callbacks on private-App.Models.Client.9 for pusher:subscription_error

в консоли браузера->network->xhr я обнаружил, что запрос к broadcasting/auth не дает мне объект auth:{token}, а вместо этого возвращает мою страницу входа в систему !!!

Я думаю, что это проблема с промежуточным программным обеспечением, но я не могу его найти.

BroadcastServiceProvider.php:

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

    /*
     * Authenticate the user's personal channel...
     */
    Broadcast::channel('App.Models.Client.*', function ($user, $userId) {
        return true;
    });

}

app.js: после импорта pusher-js и Laravel Echo

$(document).ready(function() {
// check if there's a logged in user
if(Laravel.clientId) {
    window.Echo.private(`App.Models.Client.${Laravel.clientId}`)
        .notification((notification) => {
            console.log(notification);
            addNotifications([notification], '#notifications');
        });
} });

Любая помощь приветствуется!


person Mostafa Attia    schedule 01.04.2018    source источник


Ответы (2)


С версией Laravel> 5.3 и Pusher вам нужно добавить токен в запрос заголовка, ваш код в resources/assets/js/bootstrap.js

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'your key',
    cluster: 'your cluster',
    encrypted: true,
    auth: {
        headers: {
            Authorization: 'Bearer ' + YourTokenLogin
        },
    },
});

это сработало для меня, и надеюсь, что это поможет вам.

person Alex    schedule 18.05.2018

После долгого выдергивания волос я наконец нашел причину этой проблемы. Я использовал пакет для аутентификации/авторизации под названием cartalyst/sentinel, который великолепен, за исключением того, что после установки он полностью заменит поведение аутентификации Laravel по умолчанию. Таким образом, любой запрос к broadcasting/auth фактически отклоняется.

person Mostafa Attia    schedule 09.01.2019