2024年08月02日 1.0.4 token时长读取配置文件tokenOutTime

main
gaoshuguang 1 year ago
parent 2be6edb362
commit ce8e4be055

@ -17,46 +17,52 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.PrintWriter;
@Component
@Slf4j
public class FilterConfig implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if(request.getHeader("Origin")==null){
response.setHeader("Access-Control-Allow-Origin", "*");//支持跨域请求
}else{
System.out.println("request.getHeader(\"Origin\")=======>" + request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));//支持跨域请求
}
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));//支持跨域请求
response.setHeader("Access-Control-Allow-Credentials", "true");//是否支持cookie跨域
response.setHeader("Access-Control-Allow-Methods", "*");//X-forwared-port,X-forwarded-host,
response.setHeader("Access-Control-Allow-Headers", "Authorization,Origin, X-Requested-With, Content-Type, Accept,Access-Token");//Origin, X-Requested-With, Content-Type, Accept,Access-Token
response.setHeader("Set-Cookie", "SameSite=None");
String token = request.getHeader("token");
if (token.equals("test")) {
if (token == null) {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
JSONObject res = new JSONObject();
res.put("status", "-2");
res.put("msg", "登录超时请重新登陆");
PrintWriter out;
out = response.getWriter();
out.write(res.toString());
out.flush();
out.close();
return false;
}
if(token.equals("test")){
return true;
}
if (token != null) {
boolean result = TokenUtil.verify(token,request);
try {
boolean result = TokenUtil.verify(token);
//判断绑定
if (result) {
log.info("通过拦截器");
HttpSession session = request.getSession();
String Addtoken = TokenUtil.reToken(token);
session.setAttribute("token", Addtoken);
response.setHeader("token", Addtoken);
response.setHeader("token", TokenUtil.reToken(token, request));
return true;
}
} catch (Exception ignored) {
}
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
JSONObject res = new JSONObject();
res.put("status", "-1");
res.put("msg", "鉴权失败");
PrintWriter out = null;
PrintWriter out;
out = response.getWriter();
out.write(res.toString());
out.flush();

@ -5,6 +5,7 @@ import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@ -17,66 +18,27 @@ public class TokenUtil {
/**
* token
*/
private static final String TOKEN_SECRET = "apiManager";
private static String TOKEN_SECRET;
/**
*
*/
private static final long EXPIRE_DATE = 30 * 60 * 100000;
public static String token(String secreteKey) {
private static long EXPIRE_DATE;
String token = "";
try {
//过期时间
Date date = new Date(System.currentTimeMillis() + EXPIRE_DATE);
//秘钥及加密算法
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
//设置头部信息
Map<String, Object> header = new HashMap<>();
header.put("typ", "JWT");
header.put("alg", "HS256");
//携带usernamepassword信息生成签名
token = JWT.create()
.withHeader(header)
.withClaim("secreteKey", secreteKey)
.withExpiresAt(date)
.sign(algorithm);
} catch (Exception e) {
log.error("获取token异常", e);
return null;
static {
String SystemType = PropertiesUtil.getValue("SystemType");
if (SystemType == null || SystemType.equals("0") || SystemType.equals("2")) {
TOKEN_SECRET = "apiManager";
} else if (SystemType.equals("1")) {
TOKEN_SECRET = "5267915";
}
return token;
}
public static boolean verify(String token, HttpServletRequest request) {
/**
* @desc tokentrue
* @params [token]
**/
try {
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
JWTVerifier verifier = JWT.require(algorithm).build();
DecodedJWT jwt = verifier.verify(token);
HttpSession session = request.getSession();
String Man = jwt.getClaim("Man").asString().replaceAll("\\\"","");;
String Manid = jwt.getClaim("Manid").toString().replaceAll("\\\"","");;
String Manno = jwt.getClaim("Manno").toString().replaceAll("\\\"","");;
if (Man == null || Man.equals("") ||
Manid == null || Manid.equals("") ||
Manno == null || Manno.equals("")) {
return false;
}
session.setAttribute("Man", Man);
session.setAttribute("Manid", Manid);
session.setAttribute("Manno", Manno);
return true;
} catch (Exception e) {
log.error("验证token异常", e);
return false;
String tokenOutTime = PropertiesUtil.getValue("tokenOutTime");
if (tokenOutTime.isEmpty()) {
tokenOutTime = "30";
}
EXPIRE_DATE = Long.parseLong(tokenOutTime) * 60 * 1000;
}
public static boolean verify(String token) {
/**
* @desc tokentrue
@ -85,14 +47,15 @@ public class TokenUtil {
try {
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
JWTVerifier verifier = JWT.require(algorithm).build();
DecodedJWT jwt = verifier.verify(token);
verifier.verify(token);
return true;
} catch (Exception e) {
log.error("验证token异常", e);
return false;
}
}
public static String reToken(String token) {
public static String reToken(String token, HttpServletRequest request) {
/**
* @desc tokentrue
* @params [token]
@ -111,7 +74,6 @@ public class TokenUtil {
Map<String, Object> header = new HashMap<>();
header.put("typ", "JWT");
header.put("alg", "HS256");
//携带usernamepassword信息生成签名
token = JWT.create()
.withHeader(header)
.withClaim("Man", Man)
@ -119,9 +81,14 @@ public class TokenUtil {
.withClaim("Manno", Manno)
.withExpiresAt(date)
.sign(algorithm);
HttpSession session = request.getSession();
session.setAttribute("token", token);
session.setAttribute("Man", Man);
session.setAttribute("Manid", Manid);
session.setAttribute("Manno", Manno);
return token;
} catch (Exception e) {
log.error("获取token异常"+ e,"TokenUtil");
log.error("获取token异常", e);
return "";
}
}

@ -3,4 +3,5 @@
2 2024年03月27日 1.0.1 读取配置是否展示车侧身或车牌照片
3 2024年04月19日 1.0.2 出口增加车尾照片、车牌照片(车侧身,读取配置展示)、短视频的显示
4 2024年06月14日 1.0.3 入口超限统计查询优化
5 2024年08月02日 1.0.4 token时长读取配置文件tokenOutTime

@ -1,6 +0,0 @@
序号 日期 版本号 说明
1 2023年12月25日 1.0.0 初始版本号
2 2024年03月27日 1.0.1 读取配置是否展示车侧身或车牌照片
3 2024年04月19日 1.0.2 出口增加车尾照片、车牌照片(车侧身,读取配置展示)、短视频的显示
4 2024年06月14日 1.0.3 入口超限统计查询优化
Loading…
Cancel
Save