删除jwt
This commit is contained in:
@@ -1,18 +0,0 @@
|
|||||||
package com.ag.secp.platform.jwt;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description: JWT中的信息
|
|
||||||
* Author: songwp
|
|
||||||
* Version: 1.0
|
|
||||||
* Create Date: 2021/12/24
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class JWTInfo {
|
|
||||||
private String alg;
|
|
||||||
private String typ;
|
|
||||||
private long expireTime;
|
|
||||||
private String uid;
|
|
||||||
private String name;
|
|
||||||
}
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
package com.ag.secp.platform.jwt;
|
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import cn.hutool.core.exceptions.ValidateException;
|
|
||||||
import cn.hutool.json.JSONUtil;
|
|
||||||
import cn.hutool.jwt.JWTException;
|
|
||||||
import cn.hutool.jwt.JWTUtil;
|
|
||||||
import cn.hutool.jwt.JWTValidator;
|
|
||||||
import cn.hutool.jwt.signers.JWTSignerUtil;
|
|
||||||
import org.springframework.web.servlet.HandlerInterceptor;
|
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description: JWT拦截类
|
|
||||||
* Author: songwp
|
|
||||||
* Version: 1.0
|
|
||||||
* Create Date: 2021/12/24
|
|
||||||
*/
|
|
||||||
public class JWTInterceptor implements HandlerInterceptor {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
||||||
//获取请求头里的令牌
|
|
||||||
String token = request.getHeader(ResultCode.TOKEN_KEY);
|
|
||||||
//ResultCode.TOKEN_KEY_HEADER_AUTHORIZATION
|
|
||||||
//ResultCode.TOKEN_KEY_HEADER_AUTHORIZATION_BEARER
|
|
||||||
boolean isSuccess;
|
|
||||||
try {
|
|
||||||
//验证签名
|
|
||||||
isSuccess = JWTUtil.verify(token, JWTTokenForHS256.getTokenSecretByte());
|
|
||||||
//验证算法
|
|
||||||
JWTValidator.of(token).validateAlgorithm(JWTSignerUtil.hs256(JWTTokenForHS256.getTokenSecretByte()))
|
|
||||||
.validateDate(DateUtil.date());
|
|
||||||
}catch (ValidateException exception){
|
|
||||||
isSuccess = false;
|
|
||||||
}catch(JWTException e){
|
|
||||||
isSuccess = false;
|
|
||||||
}
|
|
||||||
if(isSuccess){
|
|
||||||
return true;
|
|
||||||
}else {
|
|
||||||
response.setContentType("application/json;charset=UTF-8");
|
|
||||||
response.getWriter().println(JSONUtil.parseObj(R.failedToken()));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
package com.ag.secp.platform.jwt;
|
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import cn.hutool.core.exceptions.ValidateException;
|
|
||||||
import cn.hutool.jwt.*;
|
|
||||||
import cn.hutool.jwt.signers.JWTSignerUtil;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
/**
|
|
||||||
* Description: JWT HS256 对称加密
|
|
||||||
* Author: songwp
|
|
||||||
* Version: 1.0
|
|
||||||
* Create Date: 2021/7/13
|
|
||||||
*/
|
|
||||||
public class JWTTokenForHS256 {
|
|
||||||
|
|
||||||
//token密钥
|
|
||||||
private static final String TOKEN_SECRET = "SDFSFEGEIFNEWERETSDFSD";
|
|
||||||
//间隔时间
|
|
||||||
public static final long EXPIRE_DATE = 1000*1000;
|
|
||||||
|
|
||||||
public static byte[] getTokenSecretByte(){
|
|
||||||
return TOKEN_SECRET.getBytes();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description:生成token
|
|
||||||
* @param payload
|
|
||||||
* @param expireDate 过期间隔毫秒数
|
|
||||||
* @return: java.lang.String
|
|
||||||
* @Author songwp
|
|
||||||
* Create Date 2021/12/24
|
|
||||||
*/
|
|
||||||
public static String createToken(Map<String,Object> payload,long expireDate) {
|
|
||||||
|
|
||||||
//设置头部信息
|
|
||||||
Map<String,Object> header = new HashMap<>();
|
|
||||||
header.put("typ","JWT");
|
|
||||||
header.put("alg","HS256");
|
|
||||||
//设置payload内容
|
|
||||||
// //签发时间
|
|
||||||
// payload.put(JWTPayload.ISSUED_AT, System.currentTimeMillis());
|
|
||||||
// //生效时间
|
|
||||||
// payload.put(JWTPayload.NOT_BEFORE, System.currentTimeMillis());
|
|
||||||
//过期时间
|
|
||||||
payload.put(JWTPayload.EXPIRES_AT, DateUtil.date(System.currentTimeMillis() + expireDate));
|
|
||||||
return JWTUtil.createToken(header,payload,getTokenSecretByte());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description:验证token
|
|
||||||
* @param token
|
|
||||||
* @return: boolean
|
|
||||||
* @Author songwp
|
|
||||||
* Create Date 2021/12/24
|
|
||||||
*/
|
|
||||||
public static boolean verifyToken(String token) {
|
|
||||||
boolean isSuccess;
|
|
||||||
|
|
||||||
try {
|
|
||||||
//验证签名
|
|
||||||
isSuccess = JWTUtil.verify(token, getTokenSecretByte());
|
|
||||||
//验证算法
|
|
||||||
JWTValidator.of(token).validateAlgorithm(JWTSignerUtil.hs256(getTokenSecretByte())).validateDate(DateUtil.date());
|
|
||||||
}catch (ValidateException exception){
|
|
||||||
isSuccess = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return isSuccess;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description:解释数据
|
|
||||||
* @param token
|
|
||||||
* @return: JWTInfo
|
|
||||||
* @Author songwp
|
|
||||||
* Create Date 2021/12/24
|
|
||||||
*/
|
|
||||||
public static JWTInfo parseToken(String token) {
|
|
||||||
JWTInfo jwtInfo = new JWTInfo();
|
|
||||||
final JWT jwt = JWTUtil.parseToken(token);
|
|
||||||
jwtInfo.setTyp(jwt.getHeader(JWTHeader.TYPE).toString());
|
|
||||||
jwtInfo.setAlg(jwt.getHeader(JWTHeader.ALGORITHM).toString());
|
|
||||||
jwtInfo.setExpireTime(Long.parseLong(jwt.getPayload(JWTPayload.EXPIRES_AT).toString()));;
|
|
||||||
jwtInfo.setName(jwt.getPayload("name").toString());
|
|
||||||
jwtInfo.setUid(jwt.getPayload("uid").toString());
|
|
||||||
return jwtInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
package com.ag.secp.platform.jwt;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.experimental.Accessors;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description: 统一返回结果的类
|
|
||||||
* Author: songwp
|
|
||||||
* Version: 1.0
|
|
||||||
* Create Date: 2021/9/3
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@Accessors(chain = true)//可以进行链式操作
|
|
||||||
public class R {
|
|
||||||
|
|
||||||
private int respCode;
|
|
||||||
|
|
||||||
private String respMsg;
|
|
||||||
|
|
||||||
private Map<String,Object> data = new HashMap<>();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description:私有构造方法
|
|
||||||
* @param
|
|
||||||
* @return: com.ag.secp.mobile.common.R
|
|
||||||
* @Author songwp
|
|
||||||
* Create Date 2021/9/3
|
|
||||||
*/
|
|
||||||
private R(){}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description:请求成功静态方法
|
|
||||||
* @param
|
|
||||||
* @return: com.ag.secp.mobile.common.R
|
|
||||||
* @Author songwp
|
|
||||||
* Create Date 2021/9/3
|
|
||||||
*/
|
|
||||||
public static R success() {
|
|
||||||
R r = new R();
|
|
||||||
r.setRespCode(ResultCode.SUCCESS);
|
|
||||||
r.setRespMsg(ResultCode.SUCCESS_MSG);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description:请求失败静态方法
|
|
||||||
* @param
|
|
||||||
* @return: com.ag.secp.mobile.common.R
|
|
||||||
* @Author songwp
|
|
||||||
* Create Date 2021/9/3
|
|
||||||
*/
|
|
||||||
public static R failed(String failedMsg) {
|
|
||||||
R r = new R();
|
|
||||||
r.setRespCode(ResultCode.FAILED);
|
|
||||||
r.setRespMsg(failedMsg);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description:TOKEN验证失败
|
|
||||||
* @param
|
|
||||||
* @return: com.ag.secp.mobile.common.R
|
|
||||||
* @Author songwp
|
|
||||||
* Create Date 2021/9/3
|
|
||||||
*/
|
|
||||||
public static R failedToken() {
|
|
||||||
R r = new R();
|
|
||||||
r.setRespCode(ResultCode.LOGIN_REQUIRED);
|
|
||||||
r.setRespMsg(ResultCode.TOKEN_VERIFY_ERROR);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
public R setRData(String key,Object value) {
|
|
||||||
this.data.put(key,value);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public R setRData(Map<String,Object> map) {
|
|
||||||
this.setData(map);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
package com.ag.secp.platform.jwt;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description: 数据返回状态码
|
|
||||||
* Author: songwp
|
|
||||||
* Version: 1.0
|
|
||||||
* Create Date: 2021/9/3
|
|
||||||
*/
|
|
||||||
public interface ResultCode {
|
|
||||||
|
|
||||||
//请求成功
|
|
||||||
int SUCCESS = 1;
|
|
||||||
String SUCCESS_MSG = "请求成功";
|
|
||||||
//请求失败
|
|
||||||
int FAILED = 0;
|
|
||||||
|
|
||||||
String FAILED_MSG = "请求失败";
|
|
||||||
|
|
||||||
String FAILED_MSG_img = "图片不存在";
|
|
||||||
|
|
||||||
//登录--用户名或密码错误
|
|
||||||
String USERNAME_OR_PASSWORD_ERROR_MSG = "用户名或密码错误";
|
|
||||||
String USER_FROZEN = "账号已冻结";
|
|
||||||
String USER_IS_NULL = "无此用户";
|
|
||||||
String USER_IS_EXISTS = "用户名已存在";
|
|
||||||
|
|
||||||
String TOKEN_VERIFY_ERROR = "token验证失败";
|
|
||||||
String TOKEN_KEY = "token";
|
|
||||||
String TOKEN_KEY_HEADER_AUTHORIZATION = "Authorization";
|
|
||||||
String TOKEN_KEY_HEADER_AUTHORIZATION_BEARER = "Bearer";
|
|
||||||
|
|
||||||
//系统繁忙,请稍候再试
|
|
||||||
Integer SYSTEM_BUSY = -1;
|
|
||||||
//请求参数不合法
|
|
||||||
Integer ILLEGAL_PARAMETER = 40000;
|
|
||||||
//需要 GET 请求
|
|
||||||
Integer GET_REQUEST = 43001;
|
|
||||||
//需要 POST 请求
|
|
||||||
Integer POST_REQUEST = 43002;
|
|
||||||
//需要 HTTPS 请求
|
|
||||||
Integer HTTPS_REQUEST = 43003;
|
|
||||||
//API 调用太频繁,请稍候再试
|
|
||||||
Integer API_BUSY = 45011;
|
|
||||||
//系统错误 (system error)
|
|
||||||
Integer SERVE_ERROR = 61450;
|
|
||||||
|
|
||||||
//(Illegal token)
|
|
||||||
Integer ILLEGAL_TOKEN = 50008;
|
|
||||||
//Other clients logged in
|
|
||||||
Integer OTHERCLIENTS_LOGININ = 50012;
|
|
||||||
//Token expired
|
|
||||||
Integer TOKEN_EXPIRED = 50014;
|
|
||||||
//会话过期,请重新登录
|
|
||||||
Integer LOGIN_REQUIRED = 70500;
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
package com.ag.web.api;
|
|
||||||
|
|
||||||
import com.ag.secp.platform.jwt.JWTInfo;
|
|
||||||
import com.ag.secp.platform.jwt.JWTTokenForHS256;
|
|
||||||
import org.springframework.util.Assert;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description:
|
|
||||||
* @author: fengjun
|
|
||||||
* @time: 2022/9/1 16:21
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/jwt")
|
|
||||||
public class JwtController {
|
|
||||||
@RequestMapping(value = "/getJwt")
|
|
||||||
public String getJwt(@NotNull String username, @NotNull String password) {
|
|
||||||
Assert.isTrue("admin".equals(username) && "ps".equals(password),"登录密码错误");
|
|
||||||
Map<String, Object> map = new HashMap<>();
|
|
||||||
map.put("uid", "000010000");
|
|
||||||
return JWTTokenForHS256.createToken(map, 30000000);
|
|
||||||
}
|
|
||||||
@RequestMapping(value = "/getWater")
|
|
||||||
public String getWater(){
|
|
||||||
return "give you water";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user