123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- package com.huimv.admin.common.token;
- import cn.hutool.core.util.ObjectUtil;
- import io.jsonwebtoken.*;
- import org.apache.commons.lang.StringUtils;
- import javax.servlet.http.HttpServletRequest;
- import java.util.Date;
- public class TokenSign {
- /**
- * 过期时间7天
- */
- private static final long EXPIRE_TIME= 7 * 24 * 60 * 60 * 1000;
- /**
- * 私钥,使用它生成token,最好进行下加密
- */
- private static final String TOKEN_SECRET="Token";
- private static final String APP_SECRET = "ukc8BDbRigUDaY6pZFfWus2jZWLPHO";
- private static final int REFRESH_TIME = 300;
- /**
- * 产生token
- * @return
- */
- public static String sign(String userName,Integer id,String farmIds){
- String JwtToken = Jwts.builder()
- //头部信息
- .setHeaderParam("typ", "JWT")
- .setHeaderParam("alg", "HS256")
- .setSubject("hm-user")
- .setIssuedAt(new Date())
- //过期时间
- .setExpiration(new Date(System.currentTimeMillis() + EXPIRE_TIME))
- //token主体部分,存储用户信息
- .claim("userName", userName)
- .claim("id",id)
- .claim("farmIds",farmIds)
- .signWith(SignatureAlgorithm.HS256, APP_SECRET)
- .compact();
- return JwtToken;
- }
- /**
- * token校验是否正确
- * @param token
- * @return
- */
- public static boolean verify(String token){
- if (StringUtils.isBlank(token)) {
- return false;
- }
- try {
- Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(token);
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- return true;
- }
- /**
- * 根据token获取会员id
- *
- * @param request
- * @return
- */
- public static Integer getMemberIdByJwtToken(HttpServletRequest request) {
- String jwtToken = request.getHeader("accessToken");
- if (StringUtils.isBlank(jwtToken)) {
- return null;
- }
- Claims claims = getClaims(jwtToken);
- if(ObjectUtil.isEmpty(claims)||ObjectUtil.isEmpty(claims.get("id"))){
- }
- return (Integer) claims.get("id");
- }
- /**
- * 根据token获取用户类型
- *
- * @param request
- * @return
- */
- public static Integer getUserTypeByJwtToken(HttpServletRequest request) {
- String jwtToken = request.getHeader("accessToken");
- if (StringUtils.isBlank(jwtToken)) {
- return null;
- }
- Claims claims = getClaims(jwtToken);
- if(ObjectUtil.isEmpty(claims)||ObjectUtil.isEmpty(claims.get("type"))){
- }
- return (Integer) claims.get("type");
- }
- public static String getFarmIds(HttpServletRequest request) {
- String jwtToken = request.getHeader("accessToken");
- if (StringUtils.isBlank(jwtToken)) {
- return null;
- }
- Claims claims = getClaims(jwtToken);
- return (String) claims.get("farmIds");
- }
- public static String getUserNameByJwtToken(HttpServletRequest request) {
- String jwtToken = request.getHeader("accessToken");
- if (StringUtils.isBlank(jwtToken)) {
- return null;
- }
- Claims claims = getClaims(jwtToken);
- return (String) claims.get("userName");
- }
- /**
- * 获取claims对象
- *
- * @param jwtToken
- * @return
- */
- public static Claims getClaims(String jwtToken) {
- try {
- Jws<Claims> claimsJws = Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken);
- return claimsJws.getBody();
- }catch (Exception e){
- return null;
- }
- }
- /**
- * 是否过期
- *
- * @param claims
- * @return -1:有效,0:有效,1:过期,2:被篡改
- */
- public static int verifyToken(Claims claims) {
- if (claims == null) {
- return 1;
- }
- try {
- claims.getExpiration()
- .before(new Date());
- // 需要自动刷新TOKEN
- if ((claims.getExpiration().getTime() - System.currentTimeMillis()) < REFRESH_TIME * 1000) {
- return -1;
- } else {
- return 0;
- }
- } catch (ExpiredJwtException ex) {
- return 1;
- } catch (Exception e) {
- return 2;
- }
- }
- }
|