springboot项目使用jwt进行身份校验

本文详细介绍如何在SpringBoot项目中使用JWT进行身份验证,包括引入依赖、编写工具类、实现拦截器及配置等步骤。

1.引入依赖

<!-- JWT相关 -->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.7.0</version>
        </dependency>

2.编写jwt工具类

public class JwtUtils {
  public static final String SUBJECT = "xuefeng";
  public static final long EXPIRE = 1000*60*60*24*7;  //过期时间,毫秒,一周
  //秘钥
  public static final  String APPSECRET = "xd666";

  /**
   * 生成jwt
   * @param user
   * @return
   */
  public static String geneStudentToken(User user){
      if(user == null || user.getId() == null || user.getName() == null
              || user.getHeadImg()==null){
          return null;
      }
      String token = Jwts.builder().setSubject(SUBJECT)
              .claim("id",user.getId())
              .claim("name",user.getName())
              .claim("img",user.getHeadImg())
              .setIssuedAt(new Date())
              .setExpiration(new Date(System.currentTimeMillis()+EXPIRE))
              .signWith(SignatureAlgorithm.HS256,APPSECRET).compact();
      return token;
  }
  /**
   * 校验token
   * @param token
   * @return
   */
  public static Claims checkJWT(String token ){
      try{
          final Claims claims =  Jwts.parser().setSigningKey(APPSECRET).
                  parseClaimsJws(token).getBody();
          return  claims;

      }catch (Exception e){ }
      return null;
  }
}

3.编写拦截器(Intercepter)

public class LoginIntercepter implements HandlerInterceptor {
    private static final Gson gson = new Gson();
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String token = request.getHeader("token");
        if(token == null ){
            token = request.getParameter("token");
        }
        if(token != null ) {
           Claims claims =  JwtUtils.checkJWT(token);
            if(claims !=null){
                Integer userId = (Integer)claims.get("id");
                String name = (String) claims.get("name");
                request.setAttribute("user_id",userId);
                request.setAttribute("name",name);
                return true;
            }
        }
        return false;
    }
}

4.配置拦截器(config)

@Configuration
public class IntercepterConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginIntercepter()).addPathPatterns("/user/api/v1/*/**");
        WebMvcConfigurer.super.addInterceptors(registry);
    }
}

5.结语

由此我们的springboot简单实现jwt就实现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值