在 Laravel Echo 身份验证之前刷新 JWT 令牌

Refresh JWT token before Laravel Echo authentication

当我的浏览器选项卡从后台返回时,我的 Web 前端无法再向 Laravel 的广播身份验证端点进行身份验证,因为我的 JWT 令牌已过期。我该如何解决这个问题?

这是我当前的代码:

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: '{{ config('broadcasting.connections.pusher.key') }}',
    cluster: 'eu',
    forceTLS: true,
    auth: {
        headers: {
            'Authorization': 'Bearer ' + keycloak.token
        }
    }
});

这是我在调用其他经过身份验证的端点之前刷新我的 JWT 令牌的方式:

keycloak.updateToken(30).then(() => {
    axios({
        url: url,
        headers: {'Authorization': 'Bearer ' + keycloak.token},
        params: params
    }).then(response => {
        console.log(response.data);
    });
});

在 Github 查看 Echo 的源代码时,似乎可以注册拦截器。那是正确的方向吗?似乎无法将可调用对象放入 Echo 连接选项的 auth 对象中。

有人知道我该如何解决我的问题吗?

可以根据这些文档自定义身份验证:https://laravel.com/docs/9.x/broadcasting#customizing-the-authorization-request

因此答案是刷新 authorize 可调用对象中的 JWT 令牌。