Javascript 为什么在刷新JWT时侦听401错误,而在发送请求之前不检查过期状态?
所有关于使用Angular刷新JWT的教程都显示,在发送带有过期令牌的请求后,我应该侦听401状态。好奇为什么不在发送肯定会被拒绝的请求之前检查客户端上的令牌过期状态?有什么缺点吗?什么也找不到Javascript 为什么在刷新JWT时侦听401错误,而在发送请求之前不检查过期状态?,javascript,angular,typescript,Javascript,Angular,Typescript,所有关于使用Angular刷新JWT的教程都显示,在发送带有过期令牌的请求后,我应该侦听401状态。好奇为什么不在发送肯定会被拒绝的请求之前检查客户端上的令牌过期状态?有什么缺点吗?什么也找不到 const authToken=this.authService.getToken()作为字符串; 如果(authToken){ const isExpired=this.jwtHelper.isTokenExpired(authToken); log(isExpired&!this.isRefresh
const authToken=this.authService.getToken()作为字符串;
如果(authToken){
const isExpired=this.jwtHelper.isTokenExpired(authToken);
log(isExpired&!this.isRefreshing);
if(isExpired&!this.isRefreshing){
this.isRefreshing=true;
this.authService.refreshToken().subscribe(响应=>{
this.isRefreshing=false;
this.authService.storeTokens(response.data.token、response.data.refreshtToken);
返回next.handle(this.addTokenToRequest(request,response.data.token));
});
}
}
如果用户计算机的日期与服务器不匹配怎么办?他们仍然可以拥有有效的JWT,但客户认为他们没有,因此无法刷新他们的令牌
您应该在服务器端验证JWT,在服务器端您的代码不受修改。您可以很容易地修改客户端cookie/storage/javascript代码
让服务器的用户跳出是最可维护的实现,因为您要在一个地方合并到期。有许多类型的请求可以命中服务器,而不仅仅是来自Angular应用程序的请求。i、 e.使用邮递员及其用户凭据发出api请求的人会逃避您在Angular应用程序中输入的任何逻辑(显然)。如果用户计算机的日期与服务器不匹配怎么办?他们仍然可以拥有有效的JWT,但客户认为他们没有,因此无法刷新他们的令牌 您应该在服务器端验证JWT,在服务器端您的代码不受修改。您可以很容易地修改客户端cookie/storage/javascript代码
让服务器的用户跳出是最可维护的实现,因为您要在一个地方合并到期。有许多类型的请求可以命中服务器,而不仅仅是来自Angular应用程序的请求。i、 e.使用邮递员及其用户凭据发出api请求的人会避开您在Angular应用程序中输入的任何逻辑(显然)。您将如何检查令牌是否已过期?不能保证令牌不会在你认为它到期之前有其他的原因。我没有考虑这个问题,因为在我的情况下,客户端/服务器的时间总是一样的。你如何检查令牌是否过期?不能保证令牌不会在你认为它到期之前有其他的原因。我没有想到这一点,因为在我的情况下,客户机/服务器的时间总是一样的。没有考虑客户机/服务器的时差,因为这不是我的情况。谢谢你的回答。是的,刚刚说到这里。没有考虑客户机/服务器的时差,因为这不是我的情况。谢谢你的回答。