在 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 令牌。
当我的浏览器选项卡从后台返回时,我的 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 令牌。