处理token 失效问题

This commit is contained in:
andy 2025-04-09 14:46:40 +08:00
parent 011dbf48c6
commit a6ab62fa82

View File

@ -6,6 +6,7 @@ import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -98,13 +99,7 @@ public class LoginServiceImpl implements LoginService {
String res = LoginUtil.checkSessionKey(accessTokenService.getAccessToken(), openid, hmac.digestHex(""));
JSONObject jo = JSONUtil.parseObj(res);
if (jo.getInt("errcode") == 0) {
//Map<String, String> m = tokenBuilder(wuid);
String wxToken= String.valueOf(redisUtil.get(HDConstant.wxToken + wuid));
//刷新token的过期时间
redisUtil.set(HDConstant.wxToken + wuid, wxToken, tokenExpHour * 3600L);
Map<String, String> m = new HashMap<String, String>();
m.put("wuid", wuid);
m.put("wxToken", wxToken);
Map<String, String> m = tokenBuilder(wuid);
return new Result<Map<String, String>>().success(m);
}
return new Result<Map<String, String>>().error(CodeMsg.WECHAT_SERRION_ERROR, jo);
@ -137,10 +132,16 @@ public class LoginServiceImpl implements LoginService {
@Override
public Map<String, String> tokenBuilder(String wuid) {
String randomStr = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_FORMATTER);
String wxToken = XCXUtil.wechatToken(wuid, randomStr);
//获取redis中的token
String wxToken = ((redisUtil.hasKey(HDConstant.wxToken + wuid) && !ObjectUtils.isEmpty(redisUtil.get(HDConstant.wxToken + wuid))) ? String.valueOf(redisUtil.get(HDConstant.wxToken + wuid)) : null);
if(StringUtils.isEmpty(wxToken)) {
String randomStr = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_FORMATTER);
wxToken = XCXUtil.wechatToken(wuid, randomStr);
redisUtil.set(HDConstant.tokenRandomStr + wuid, randomStr);
}
//刷新token
redisUtil.set(HDConstant.wxToken + wuid, wxToken, tokenExpHour * 3600L);
redisUtil.set(HDConstant.tokenRandomStr + wuid, randomStr);
Map<String, String> m = new HashMap<String, String>();
m.put("wuid", wuid);
m.put("wxToken", wxToken);