You've already forked FrameTour-BE
景区账号限制登录状态
This commit is contained in:
@@ -8,7 +8,10 @@ import com.ycwl.basic.constant.RequestConstant;
|
|||||||
import com.ycwl.basic.exception.CheckTokenException;
|
import com.ycwl.basic.exception.CheckTokenException;
|
||||||
import com.ycwl.basic.exception.MissTokenException;
|
import com.ycwl.basic.exception.MissTokenException;
|
||||||
import com.ycwl.basic.exception.PermissionException;
|
import com.ycwl.basic.exception.PermissionException;
|
||||||
|
import com.ycwl.basic.exception.TokenExpireException;
|
||||||
|
import com.ycwl.basic.mapper.ScenicAccountMapper;
|
||||||
import com.ycwl.basic.model.jwt.JwtInfo;
|
import com.ycwl.basic.model.jwt.JwtInfo;
|
||||||
|
import com.ycwl.basic.model.pc.scenic.entity.ScenicAccountEntity;
|
||||||
import com.ycwl.basic.utils.JwtTokenUtil;
|
import com.ycwl.basic.utils.JwtTokenUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -23,14 +26,21 @@ import jakarta.servlet.http.HttpServletRequest;
|
|||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.ycwl.basic.constant.JwtRoleConstant.MERCHANT;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class AuthInterceptor implements HandlerInterceptor {
|
public class AuthInterceptor implements HandlerInterceptor {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
RedisTemplate redisTemplate;
|
RedisTemplate redisTemplate;
|
||||||
|
@Autowired
|
||||||
|
private ScenicAccountMapper scenicAccountMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||||
@@ -68,10 +78,14 @@ public class AuthInterceptor implements HandlerInterceptor {
|
|||||||
JwtInfo jwtInfo;
|
JwtInfo jwtInfo;
|
||||||
try {
|
try {
|
||||||
jwtInfo = JwtTokenUtil.parsingToken(token);
|
jwtInfo = JwtTokenUtil.parsingToken(token);
|
||||||
// LocalDateTime expireTime = jwtInfo.getExpireTime();
|
if (StringUtils.equals(jwtInfo.getRoleId(), MERCHANT.type)) {
|
||||||
// if (LocalDateTime.now(ZoneId.systemDefault()).isAfter(expireTime)) {
|
Long merchantId = jwtInfo.getUserId();
|
||||||
// throw new TokenExpireException("token过期");
|
ScenicAccountEntity account = scenicAccountMapper.findAccountById(merchantId.toString());
|
||||||
// }
|
LocalDateTime expireTime = jwtInfo.getExpireTime();
|
||||||
|
if (account.getUpdateTime().toInstant().getEpochSecond() != expireTime.atZone(ZoneId.systemDefault()).toEpochSecond()) {
|
||||||
|
throw new TokenExpireException("token过期");
|
||||||
|
}
|
||||||
|
}
|
||||||
BaseContextHandler.setToken(token);
|
BaseContextHandler.setToken(token);
|
||||||
BaseContextHandler.setName(jwtInfo.getName());
|
BaseContextHandler.setName(jwtInfo.getName());
|
||||||
BaseContextHandler.setUserId(String.valueOf(jwtInfo.getUserId()));
|
BaseContextHandler.setUserId(String.valueOf(jwtInfo.getUserId()));
|
||||||
|
@@ -99,7 +99,7 @@ public class AppScenicServiceImpl implements AppScenicService {
|
|||||||
jwtInfo.setAccount(scenicAccount.getAccount());
|
jwtInfo.setAccount(scenicAccount.getAccount());
|
||||||
jwtInfo.setUserId(scenicAccount.getId());
|
jwtInfo.setUserId(scenicAccount.getId());
|
||||||
jwtInfo.setRoleId(MERCHANT.type);
|
jwtInfo.setRoleId(MERCHANT.type);
|
||||||
String token = jwtTokenUtil.generateToken(jwtInfo);
|
String token = jwtTokenUtil.generateToken(jwtInfo, scenicAccount.getUpdateTime());
|
||||||
|
|
||||||
ScenicLoginRespVO scenicLoginRespVO = new ScenicLoginRespVO();
|
ScenicLoginRespVO scenicLoginRespVO = new ScenicLoginRespVO();
|
||||||
BeanUtil.copyProperties(scenicAccount,scenicLoginRespVO);
|
BeanUtil.copyProperties(scenicAccount,scenicLoginRespVO);
|
||||||
|
@@ -13,6 +13,8 @@ import org.springframework.web.context.request.ServletRequestAttributes;
|
|||||||
import jakarta.servlet.http.Cookie;
|
import jakarta.servlet.http.Cookie;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@@ -53,6 +55,12 @@ public class JwtTokenUtil {
|
|||||||
String token = JwtAnalysisUtil.generateToken(jwtInfo, bytes, expireTime);
|
String token = JwtAnalysisUtil.generateToken(jwtInfo, bytes, expireTime);
|
||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
|
public static String generateToken(JwtInfo jwtInfo, Date expireTime) throws Exception {
|
||||||
|
byte[] bytes = RsaKeyUtil.toBytes(PRI_KEY);
|
||||||
|
LocalDateTime dt = expireTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
||||||
|
String token = JwtAnalysisUtil.generateToken(jwtInfo, bytes, dt);
|
||||||
|
return token;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user