我的SignalR应用程序使用JWT身份验证cookie进行身份验证。为了测试,我将jwt exp有效负载设置为3分钟。
我在Chrome浏览器中测试过,使用serverSentEvent进行传输。
我在页面上有一个按钮,它将触发Hub的服务器方法。
3分钟后,当我点击按钮时。集线器将响应403禁止错误。我想这是因为我的jwt令牌过期了。
但是,如果我重新加载页面,则集线器仍然连接并启动。该页面仍然使用发送到服务器的相同cookie。当我点击按钮触发服务器的方法时。这次它不会返回403错误。服务器方法仍然被调用。但在server方法中,Context.User.Identity.IsAuthenticated = false。
我无法理解为什么第一次加载会触发403错误,但不会重新加载页面。
我想捕获对signalr的非授权访问,如果jwk令牌已过期或包含无效数据,我将重定向到登录页面。