【发布时间】:2020-09-21 21:56:30
【问题描述】:
我通过 SignalR 从客户端(角度 9)和服务器(asp.net core 3.1)创建实时连接,并通过 JWT 令牌授权集线器,例如以下代码:
private createConnection() {
this.hubConnection = new HubConnectionBuilder().withUrl(`${this.appConfig.hubEndpoint}/Hubs`,
{ accessTokenFactory: () => jwtToken })
.withAutomaticReconnect()
.build();
}
private startConnection(): void {
this.hubConnection
.start()
.then(() => {
this.connectionIsEstablished = true;
this.connectionEstablished.emit(true);
})
.catch(err => {
console.log('Error while establishing connection, retrying...');
});
}
在令牌过期之前,这可以正常工作。根据我的研究,在收到带有刷新令牌的新令牌后,应该停止之前的连接,并应该使用新令牌创建新连接。 现在我想知道我该怎么做?我必须经常检查令牌吗?还是应该通过向服务器发送每个请求来解决这个问题?
【问题讨论】:
-
你找到方法了吗?
-
@Kardon63 你也找到方法了吗? xD
-
@MehdiBenmoha 在关闭事件中,您可以检查错误字符串是否包含
unauthorized,然后您可以重新启动连接,但尚未实现,但我认为应该这样做 -
我正在试一试..如果我能正常工作会更新你
-
@Kardon63 onclose 事件被触发,但字符串不包含未授权,监听器获得
undefined值。我也很难更新连接,因为我正在使用异步调用来获取令牌,并且我正在用 rxJS 包装整个系统,所以快速而肮脏的修复是在收到断开连接的事件时重新加载页面,同时还为自动重新连接设置了激进的延迟。
标签: angular asp.net-core signalr refresh-token