diff --git a/server/like-front/src/main/java/com/mdd/front/LikeFrontInterceptor.java b/server/like-front/src/main/java/com/mdd/front/LikeFrontInterceptor.java index b66edb28..aa19db8f 100644 --- a/server/like-front/src/main/java/com/mdd/front/LikeFrontInterceptor.java +++ b/server/like-front/src/main/java/com/mdd/front/LikeFrontInterceptor.java @@ -14,6 +14,7 @@ import com.mdd.common.mapper.user.UserMapper; import com.mdd.common.mapper.user.UserSessionMapper; import com.mdd.common.util.StringUtils; import com.mdd.common.util.YmlUtils; +import com.mdd.front.cache.TokenLoginCache; import org.jetbrains.annotations.NotNull; import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; @@ -57,25 +58,28 @@ public class LikeFrontInterceptor implements HandlerInterceptor { return HandlerInterceptor.super.preHandle(request, response, handler); } + // 读取请求令牌 + String token = request.getHeader(YmlUtils.get("sa-token.token-name")); + LikeFrontThreadLocal.put("token", token); // 登录权限校验 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().eq("token", token + LikeFrontThreadLocal.getUserId()).gt("expire_time", System.currentTimeMillis() / 1000).orderByDesc("id").last("limit 1")); + UserSession userSession = userSessionMapper.selectOne(new QueryWrapper().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); } + + Method method = this.obtainAop(handler); + this.checkLogin(method, token); + } catch (LoginException e) { AjaxResult result = AjaxResult.failed(e.getCode(), e.getMsg()); response.getWriter().print(JSON.toJSONString(result)); @@ -132,14 +136,15 @@ public class LikeFrontInterceptor implements HandlerInterceptor { * @param method 方法类 * @author fzr */ - private void checkLogin(Method method) { + private void checkLogin(Method method, String token) { for (int i=0; i<=0; i++) { // 免登校验 if (StringUtils.isNotNull(method) && method.isAnnotationPresent(NotLogin.class)) { try { - Object id = StpUtil.getLoginId(); - if (StringUtils.isNotNull(id)) { - Integer userId = Integer.parseInt(id.toString()); + //Object id = StpUtil.getLoginId(); + Integer userId = TokenLoginCache.get(); + //if (StringUtils.isNotNull(id)) { + if (userId > 0) { User user = userMapper.selectOne(new QueryWrapper() .select("id,sn,account") .eq("id", userId) @@ -155,7 +160,22 @@ public class LikeFrontInterceptor implements HandlerInterceptor { } // 令牌校验 - String token = StpUtil.getTokenValue(); +// String token = StpUtil.getTokenValue(); +// if (StringUtils.isNull(token) || StringUtils.isBlank(token)) { +// Integer errCode = ErrorEnum.TOKEN_EMPTY.getCode(); +// String errMsg = ErrorEnum.TOKEN_EMPTY.getMsg(); +// throw new LoginException(errCode, errMsg); +// } +// +// // 登录校验 +// Object id = StpUtil.getLoginId(); +// if (StringUtils.isNull(id)) { +// Integer errCode = ErrorEnum.TOKEN_INVALID.getCode(); +// String errMsg = ErrorEnum.TOKEN_INVALID.getMsg(); +// throw new LoginException(errCode, errMsg); +// } + + // 令牌校验 if (StringUtils.isNull(token) || StringUtils.isBlank(token)) { Integer errCode = ErrorEnum.TOKEN_EMPTY.getCode(); String errMsg = ErrorEnum.TOKEN_EMPTY.getMsg(); @@ -163,15 +183,15 @@ public class LikeFrontInterceptor implements HandlerInterceptor { } // 登录校验 - Object id = StpUtil.getLoginId(); - if (StringUtils.isNull(id)) { + Integer userId = TokenLoginCache.get(); + if (userId <= 0) { Integer errCode = ErrorEnum.TOKEN_INVALID.getCode(); String errMsg = ErrorEnum.TOKEN_INVALID.getMsg(); throw new LoginException(errCode, errMsg); } // 用户信息缓存 - Integer userId = Integer.parseInt(id.toString()); + //Integer userId = Integer.parseInt(id.toString()); User user = userMapper.selectOne(new QueryWrapper() .select("id,sn,account,nickname,mobile,is_disable") .eq("id", userId) diff --git a/server/like-front/src/main/java/com/mdd/front/cache/TokenLoginCache.java b/server/like-front/src/main/java/com/mdd/front/cache/TokenLoginCache.java index 09e5f5b9..56fb28c2 100644 --- a/server/like-front/src/main/java/com/mdd/front/cache/TokenLoginCache.java +++ b/server/like-front/src/main/java/com/mdd/front/cache/TokenLoginCache.java @@ -16,6 +16,7 @@ public class TokenLoginCache { Integer terminal = LikeFrontThreadLocal.getTerminal(); String token = LikeFrontThreadLocal.getToken(); String key = KEY + terminal + ":" + token; + System.out.println(key); Object o = RedisUtils.get(key); if (StringUtils.isNull(o)) { return 0; diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java index fdc99982..ec03dd6e 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java @@ -454,7 +454,10 @@ public class LoginServiceImpl implements ILoginService { */ private LoginTokenVo __loginToken(Integer userId, String mobile, Integer isNew, Integer terminal) { // 实现账号登录 - StpUtil.login(userId); + //StpUtil.login(userId); + + String token = ToolUtils.makeToken(); + TokenLoginCache.set(token, userId, String.valueOf(terminal)); // 更新登录信息 User user = new User(); @@ -466,7 +469,7 @@ public class LoginServiceImpl implements ILoginService { LoginTokenVo vo = new LoginTokenVo(); vo.setId(userId); vo.setIsBindMobile(!StringUtils.isEmpty(mobile)); - vo.setToken(StpUtil.getTokenValue()); + vo.setToken(token); vo.setIsNew(isNew); vo.setMobile(mobile); @@ -475,7 +478,7 @@ public class LoginServiceImpl implements ILoginService { UserSession userSession = new UserSession(); userSession.setUserId(userId); - userSession.setToken(StpUtil.getTokenValue() + userId); + userSession.setToken(token); userSession.setTerminal(terminal); userSession.setUpdateTime(System.currentTimeMillis() / 1000); userSession.setExpireTime(System.currentTimeMillis() / 1000 + Long.valueOf(YmlUtils.get("sa-token.timeout")));