登录接口创建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;
    }

 

posted @ 2023-11-29 13:18  杨吃羊  阅读(125)  评论(0)    收藏  举报