Oauth2设置令牌过期时间accessTokenValiditySeconds,在代码中怎么判断是否过期

我们再配置ouath2的时候都会配置资源认证的服务器

其中在配置授权服务器断点时会配置令牌的存储:tokenStore(tokenStore) ,这个令牌存储中会存令牌的过期时间,cliend_id,name等信息,一般默认使用InMemoryTokenStore()存储。我们可以在AuthorizationServerEndpointsConfigurer类中查看区别判断token的存储代码逻辑

Oauth2设置令牌过期时间accessTokenValiditySeconds,在代码中怎么判断是否过期

有了上面的前提后,我们直接在AuthorizationServerEndpointsConfigurer类中定位TokenStore

Oauth2设置令牌过期时间accessTokenValiditySeconds,在代码中怎么判断是否过期

我们可以看到其中逻辑当你不配置tokenStore时也就是等于null时,会先判断令牌转换器accessTokenConverter()类型 ,这里我只讲 InMemoryTokenStore

private final DelayQueue<TokenExpiry> expiryQueue = new DelayQueue<TokenExpiry>();

private final ConcurrentHashMap<String, TokenExpiry> expiryMap = new ConcurrentHashMap<String, TokenExpiry>();

Oauth2设置令牌过期时间accessTokenValiditySeconds,在代码中怎么判断是否过期

这是定时队列

当你设置有效时间时会走这里

Oauth2设置令牌过期时间accessTokenValiditySeconds,在代码中怎么判断是否过期

其中的TokenEXpir就有对时间的操作

Oauth2设置令牌过期时间accessTokenValiditySeconds,在代码中怎么判断是否过期

队列也会执行flush操作,轮询之后移除队列信息。当队列信息为空时,就失效token

Oauth2设置令牌过期时间accessTokenValiditySeconds,在代码中怎么判断是否过期