refreshtoken用mysql_微信access_token和refresh_token保存于redis
此處以保存用戶(hù)授權(quán)access_token為例,接口調(diào)用access_token可在項(xiàng)目啟動(dòng)時(shí)進(jìn)行緩存。部分代碼如下:
@Autowired
private RedisTemplate redisTemplate;
@Value("${myapp.redisWxUserAccessToken}")
private String redisWxUserAccessToken;
// 獲取
public String getUserAccessToken(Object userId) {
String accessToken = null;
if(StringUtils.isEmpty(userId)) return accessToken;
String accessTokenStr = (String) redisTemplate.opsForHash().get(redisWxUserAccessToken, String.valueOf(userId));
long now = (new Date()).getTime();
if(!StringUtils.isEmpty(accessTokenStr)) {
String[] arr = accessTokenStr.split("#");
if(now < Long.valueOf(arr[1])) {
accessToken = arr[0];
}
}
if(StringUtils.isEmpty(accessToken)) {
accessToken = getUserAccessTokenByRefreshToken(userId);
}
return accessToken;
}
// 重新獲取
Object expiresIn = accessTokenMap.get("expires_in"); // 調(diào)用微信授權(quán)接口后,返回的expires_in參數(shù)
String value = accessTokenNew + "#" + getNowExpiresIn(expiresIn); // 此處是設(shè)置有效期
redisTemplate.opsForHash().put(redisWxUserAccessToken, String.valueOf(userId), value);
public Long getNowExpiresIn(Object expiresIn) {
long now = (new Date()).getTime();
if(expiresIn == null) return now;
Long expiresMs = Long.valueOf(String.valueOf(expiresIn)) - 15 * 60;
return expiresMs * 1000 + now;
}
總結(jié)
以上是生活随笔為你收集整理的refreshtoken用mysql_微信access_token和refresh_token保存于redis的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux权限用户组(linux 权限用
- 下一篇: sqlrelay mysql_php+s