JWT(token)的简单使用(生成令牌和解密)

第一步:导入依赖

		<dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.10.3</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.7.0</version>
        </dependency>

第二步:生成令牌

public String createToken(String id , String role ){
        long nowMillis = System.currentTimeMillis();//
        Date now = new Date(nowMillis);
        String token = JWT.create().withClaim("id",id )//withClaim()这个方法相当于将我们自己想要添加的属性以KV键值对的方式加密之后加入我们的token里面
                .withClaim("role",role)
                .withClaim("date",now).sign(Algorithm.HMAC256("123456"));//sign()表示的加密方式,括号中的123456是密钥,是可以自己设置的。
        return token ;
    }

2.2使用时直接调用:

	UTool uTool=new UTool();
    String token= uTool.createToken("1","2");
    //也可以直接将token存到数据库

第三步:解密

public DecodedJWT decodeToken(String token ){
        DecodedJWT jwt = null;
        try {
            JWTVerifier verifier = JWT.require(Algorithm.HMAC256("123456"))//只修改括号里面的Algorithm.HMAC256("123456")就可以了,意思就是按照之前定义的加密方式再解密。
            //其他的DecodedJWT ,JWTVerifier 都是框架封装好了的,我们只需要用就行了。
                    .build(); 
            jwt = verifier.verify(token);//将得到的加密字符串token传入
        } catch (JWTVerificationException exception){
            exception.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        }
        return jwt;
    }

3.2使用时直接调用方法:

public void t(HttpServletRequest request){

        String token=request.getHeader("token");//从请求头里面获取token。
        DecodedJWT jwt = uTool.decodeToken(token);
        String id  =  jwt.getClaim("id").asString();//getClaim()这个方法是从我们解密之后的数据里面根据我们之间的KV键值对的K获取到我们之前存放的值。
        String role =  jwt.getClaim("role").asString();
        System.out.println(id+"         "+role);
        //也可以从数据库里面读出来,然后进行验证。
    }

关于怎样测试?

这里我推荐使用Postman软件进行测试(也是后端开发经常用到的一个测试软件),使用起来很简单。
Postman官网下载地址

测试的时候,直接在请求头里面加入KV,K就是token,V就是后台加密之后的字符串。在请求头里面添加之后,就可以让前端携带token进行访问后端接口了。
JWT(token)的简单使用(生成令牌和解密)_第1张图片

本文章是关于JWT的一个简单使用,因为博主之前也没接触过,所以如果文章中也写的比较简单,如果有什么内容写的不到位的,欢迎大家指出来,博主将十分感谢。

你可能感兴趣的:(JWT,jwt)