实现基于令牌的身份验证的最佳方法是什么
What is the best approach to implement token based authentication
我有一个 Spring 引导应用程序,它充当服务器的客户端。它在通过身份验证后向服务器请求数据。服务器使用基于令牌的身份验证并每 15 分钟更改一次令牌。我的客户端应用程序获取新令牌的最有效和最简洁的方法是什么?默认情况下,我使用多线程,在主应用程序的后台,我每 15 分钟请求一次新令牌,但效率不高。那么是否有其他方法,如反应式编程等来做到这一点?
请注意,我的应用程序需要一次向服务器发送大量请求,所以我无法在每次发送请求时检查获取令牌的时间。
我会使用 @Retryable
和 RetryOperationsInterceptor
或 ExceptionClassifierRetryPolicy
。
事情是这样的:
我们有一个 @Component
单例来保存身份验证令牌:
@Component
public class AuthenticationHolder {
private String token;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}
使实际从服务器请求数据的 @Component
不知道身份验证过程。它只引用了您的 AuthenticationHolder
单例,并且在它尝试请求数据的方法中(显然用 @Retryable
注释,它检索令牌并发出请求。如果失败并返回错误的响应代码从服务器,让它抛出异常,它会重试。在重试之间,让你的 RetryOperationsInterceptor
更新身份验证令牌。
我有一个 Spring 引导应用程序,它充当服务器的客户端。它在通过身份验证后向服务器请求数据。服务器使用基于令牌的身份验证并每 15 分钟更改一次令牌。我的客户端应用程序获取新令牌的最有效和最简洁的方法是什么?默认情况下,我使用多线程,在主应用程序的后台,我每 15 分钟请求一次新令牌,但效率不高。那么是否有其他方法,如反应式编程等来做到这一点? 请注意,我的应用程序需要一次向服务器发送大量请求,所以我无法在每次发送请求时检查获取令牌的时间。
我会使用 @Retryable
和 RetryOperationsInterceptor
或 ExceptionClassifierRetryPolicy
。
事情是这样的:
我们有一个 @Component
单例来保存身份验证令牌:
@Component
public class AuthenticationHolder {
private String token;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}
使实际从服务器请求数据的 @Component
不知道身份验证过程。它只引用了您的 AuthenticationHolder
单例,并且在它尝试请求数据的方法中(显然用 @Retryable
注释,它检索令牌并发出请求。如果失败并返回错误的响应代码从服务器,让它抛出异常,它会重试。在重试之间,让你的 RetryOperationsInterceptor
更新身份验证令牌。