JAVA 实现 JWT

本文详细介绍了如何在Java中实现JWT(JSON Web Token)的身份验证,包括自定义注解、生成与验证JWT token的方法,以及编写拦截器进行权限控制。讲解了@Target和@Retention注解的作用,并提供了JWT token的生成与验证流程,最后总结了JWT作为标准化Token生成工具的核心价值。
摘要由CSDN通过智能技术生成
  1. 引入JWT依赖,由于是基于Java,所以需要的是java-jwt
<dependency>
      <groupId>com.auth0</groupId>
      <artifactId>java-jwt</artifactId>
      <version>3.4.0</version>
</dependency>
  1. 自定义注解用于判断是否需要验证
  • 用来跳过验证的PassToken
 @Target({
   ElementType.METHOD, ElementType.TYPE})
  @Retention(RetentionPolicy.RUNTIME)
  public @interface PassToken {
   
      boolean required() default true;
  }
  • 需要登录才能进行操作的注解UserLoginToken
@Target({
   ElementType.METHOD, ElementType.TYPE})
      @Retention(RetentionPolicy.RUNTIME)
      public @interface UserLoginToken {
   
          boolean required() default true;
      }

@Target:注解的作用目标

  • @Target(ElementType.TYPE)——接口、类、枚举、注解
  • @Target(ElementType.FIELD)——字段、枚举的常量
  • @Target(ElementType.METHOD)——方法
  • @Target(ElementType.PARAMETER)——方法参数
  • @Target(ElementType.CONSTRUCTOR) ——构造函数
  • @Target(ElementType.LOCAL_VARIABLE)——局部变量
  • @Target(ElementType.ANNOTATION_TYPE)——注解
  • @Target(ElementType.PACKAGE)——包
    @Retention:注解的保留位置
    RetentionPolicy.SOURCE:这种类型的Annotations只在源代码级别保留,编译时就会被忽略,在class字节码文件中不包含。 RetentionPolicy.CLASS:这种类型的Annotations编译时被保留,默认的保留策略,在class文件中存在,但JVM将会忽略,运行时无法获得。 RetentionPolicy.RUNTIME:这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用。
    @Document:说明该注解将被包含在javadoc中
    @Inherited:说明子类可以继承父类中的该注解

3.编写token的生成方法

  • 生成不携带自定义信息的 JWT token
  1. 构建头部信息
 Map<String, Object> map = new HashMap<String, Object>();
 map.put("alg", "HS256");
 map.put("typ", "JWT");
  1. 构建密钥信息
 Algorithm algorithm = Algorithm.HMAC256("secret");

Algorithm.HMAC256(): 使 HS256 生token,唯一密钥可以保存在服务端。“secret” 为相应的密钥

  1. 我们通过定义注册和自定义声明 并组合头部信息和密钥
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值