登录接口创建token,拦截器解析token取用户
1、登录接口创建token
1.1 登录接口逻辑:根据用户名,密码(前端传了的是加密后的密码),查询用户,如果查不到返回提示,如果能查到,根据用户名,id等非保密字段生成token并返回。
1.2 生成token代码:
public StringcreateToken(Map<String, Object> data) { Date now = new Date(); JwtBuilder accessTokenBuilder = Jwts.builder().setId(UUIDUtils.getUUID()) //jwt的唯一标识 .setIssuedAt(now)//签发时间 .setNotBefore(now) //在此时间之前不可用 .setExpiration(new Date(now.getTime() + jwtConfigProperties.getAccessTokenExpires() * 1000))//过期时间 .addClaims(data); //自定义内容(载荷) String accessToken =accessTokenBuilder.signWith(Keys.hmacShaKeyFor(Decoders.BASE64.decode(key))).compact();
return accessToken ;
}
2、每次接口调用时拦截器拦截请求并验证token的正确性
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Claims accessTokenClaims; try { // 校验 accessToken accessTokenClaims =Jwts.parserBuilder().setSigningKey(secretKey).build().parseClaimsJws(accessToken).getBody();
} return false; }
浙公网安备 33010602011771号