【问题标题】:Is it possible to set accessTokenValiditySeconds dynamically from AuthenticationProvider implemented class?是否可以从 AuthenticationProvider 实现的类动态设置 accessTokenValiditySeconds?
【发布时间】:2020-11-02 13:32:30
【问题描述】:
我想从数据库中动态设置 accessTokenValiditySeconds 值。是否可以在 AuthenticationProvider 中获取值并进行设置?或者有什么其他方法可以做到吗?
目前我正在使用 yaml 文件并从中获取值。现在我想从数据库中获取令牌有效期秒值。我该怎么做?
谢谢。
【问题讨论】:
标签:
spring-boot
spring-security
oauth-2.0
jwt
spring-security-oauth2
【解决方案1】:
是的,这是可能的!
@Component
public class TokenProvider implements InitializingBean {
private long tokenValidityInMilliseconds;
private final ConfigRepository configRepository;
public TokenProvider(ConfigRepository mealRepository) {
this.configRepository = configRepository;
}
@Override
public void afterPropertiesSet() throws Exception {
Config myConfig = configRepository.findAll().get(0);
this.tokenValidityInMilliseconds = myConfig.gettokenValidityInMilliseconds()
}
public String createToken(Authentication authentication) {
....
Date validity = new Date(now + this.tokenValidityInMilliseconds);
...
}
你的 ConfigRepository 是这样的
@Repository
public interface ConfigRepository extends CrudRepository<Config, String> {
}
希望对你有帮助