fix token时而出现相同而导致的bug

This commit is contained in:
damonyuan 2024-11-09 12:28:29 +08:00
parent 7354f5f57d
commit 8121c69f07
2 changed files with 17 additions and 43 deletions

View File

@ -57,25 +57,25 @@ public class LikeFrontInterceptor implements HandlerInterceptor {
return HandlerInterceptor.super.preHandle(request, response, handler);
}
// 记录当前平台
String terminal = request.getHeader("terminal");
String token = request.getHeader(YmlUtils.get("sa-token.token-name"));
if (StringUtils.isEmpty(terminal)) {
//userSessionMapper.
if (StringUtils.isEmpty(token)) {
LikeFrontThreadLocal.put("terminal", ClientEnum.PC.getCode());
} else {
UserSession userSession = userSessionMapper.selectOne(new QueryWrapper<UserSession>().eq("token", token).gt("expire_time", System.currentTimeMillis() / 1000).orderByDesc("id").last("limit 1"));
LikeFrontThreadLocal.put("terminal", StringUtils.isNull(userSession) ? ClientEnum.H5.getCode() : userSession.getTerminal());
}
} else {
LikeFrontThreadLocal.put("terminal", terminal);
}
// 登录权限校验
try {
Method method = this.obtainAop(handler);
this.checkLogin(method);
// 记录当前平台
String terminal = request.getHeader("terminal");
String token = request.getHeader(YmlUtils.get("sa-token.token-name"));
if (StringUtils.isEmpty(terminal)) {
//userSessionMapper.
if (StringUtils.isEmpty(token)) {
LikeFrontThreadLocal.put("terminal", ClientEnum.PC.getCode());
} else {
UserSession userSession = userSessionMapper.selectOne(new QueryWrapper<UserSession>().eq("token", token + LikeFrontThreadLocal.getUserId()).gt("expire_time", System.currentTimeMillis() / 1000).orderByDesc("id").last("limit 1"));
LikeFrontThreadLocal.put("terminal", StringUtils.isNull(userSession) ? ClientEnum.H5.getCode() : userSession.getTerminal());
}
} else {
LikeFrontThreadLocal.put("terminal", terminal);
}
} catch (LoginException e) {
AjaxResult<Object> result = AjaxResult.failed(e.getCode(), e.getMsg());
response.getWriter().print(JSON.toJSONString(result));

View File

@ -4,17 +4,14 @@ import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.dev33.satoken.stp.StpUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.mdd.common.entity.log.UserAccountLog;
import com.mdd.common.entity.user.User;
import com.mdd.common.entity.user.UserAuth;
import com.mdd.common.entity.user.UserSession;
import com.mdd.common.enums.LoginEnum;
import com.mdd.common.enums.NoticeEnum;
import com.mdd.common.exception.OperateException;
import com.mdd.common.mapper.log.UserAccountLogMapper;
import com.mdd.common.mapper.user.UserAuthMapper;
import com.mdd.common.mapper.user.UserMapper;
import com.mdd.common.mapper.user.UserSessionMapper;
@ -39,7 +36,6 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.Map;
@ -52,12 +48,11 @@ public class LoginServiceImpl implements ILoginService {
@Resource
UserMapper userMapper;
@Resource
UserAuthMapper userAuthMapper;
@Resource
UserSessionMapper userSessionMapper;
@Resource
UserAccountLogMapper userAccountLogMapper;
/**
* 注册账号
@ -127,13 +122,6 @@ public class LoginServiceImpl implements ILoginService {
Assert.isFalse(!pwd.equals(user.getPassword()), "账号或密码错误!");
Assert.isFalse(!user.getIsDisable().equals(0), "账号已被禁用!");
userAccountLogMapper.insert(new UserAccountLog() {{
setUserId(0);
setChangeType(0);
setChangeAmount(new BigDecimal(0));
setExtra(JSONObject.toJSONString(user));
}});
return this.__loginToken(user.getId(), user.getMobile(), user.getIsNewUser(), terminal);
} else {
return mobileLogin(account, code, terminal, sceneId);
@ -450,20 +438,6 @@ public class LoginServiceImpl implements ILoginService {
// 实现账号登录
StpUtil.login(userId);
userAccountLogMapper.insert(new UserAccountLog() {{
setUserId(0);
setChangeType(0);
setChangeAmount(new BigDecimal(0));
setExtra(JSONObject.toJSONString(StpUtil.getLoginId()));
}});
userAccountLogMapper.insert(new UserAccountLog() {{
setUserId(0);
setChangeType(0);
setChangeAmount(new BigDecimal(0));
setExtra(JSONObject.toJSONString(userId));
}});
// 更新登录信息
User user = new User();
user.setLoginIp(IpUtils.getHostIp());
@ -482,7 +456,7 @@ public class LoginServiceImpl implements ILoginService {
UserSession userSession = new UserSession();
userSession.setUserId(userId);
userSession.setToken(StpUtil.getTokenValue());
userSession.setToken(StpUtil.getTokenValue() + userId);
userSession.setTerminal(terminal);
userSession.setUpdateTime(System.currentTimeMillis() / 1000);
userSession.setExpireTime(System.currentTimeMillis() / 1000 + Long.valueOf(YmlUtils.get("sa-token.timeout")));