zoukankan      html  css  js  c++  java
  • jwt使用

    需要引入jwt依赖

            <dependency>
                  <groupId>com.auth0</groupId>
                  <artifactId>java-jwt</artifactId>
                  <version>3.4.0</version>
            </dependency>

    测试demo

        public static void demo() {        
            Map<String,Object> payload = new HashMap<>();
            payload.put("sub", "1234567890");
            payload.put("name", "John Doe");
            payload.put("admin", true);
            
            String result = JWT.create()
                .withClaim("sub", "1234567890")
                .withClaim("name", "John Doe")
                .withClaim("admin", true)
                .withClaim("time", "2021-03-09 18:25:00")
                .withExpiresAt(new Date()) // 实质上就是在payload中添加一个exp的时间属性
                // sign方法会根据Algorithm自动在header中添加alg与typ
                .sign(Algorithm.HMAC256("123456")); 
            System.out.println(result);
            DecodedJWT jwt = JWT.decode(result);
            System.out.println(jwt.getHeader());
            System.out.println("---------------------------------消息体");
            Map<String, Claim> claims = jwt.getClaims();
            for (String key : claims.keySet()) {
                System.out.println("key="+key+",value="+(claims.get(key).asString()==null?claims.get(key).asDate():claims.get(key).asString()));
            }
            System.out.println(jwt.getExpiresAt());
        }

    使用感觉:jwt就是一项非状态会话机制,可以将需要保存到session中的数据保存到cookie--token中,jwt就是一项防篡改的技术;

    将需要保存的数据都放入到payload中,然后使用密钥加密,当发起请求的时候,在服务器上将接收的token,将header和payload进行加密,然后和token中的加密部分进行匹对,如果对的上,就表明数据没有被篡改,否则就是被篡改过的数据

    至于token是否是在有效期,是payload中存放的一个时间属性进行判断的。

  • 相关阅读:
    SQL 查询两个时间段是否有交集的情况 三种写法
    c# 时间区间求并集
    uniapp 身份证识别 微信 百度 图片前端压缩 图片后端压缩
    Git命令大全
    构建android studio项目
    如何查tomcat进程和杀死进程
    mysql 备份 还原不了
    解决git extensions每次要输入用户名和密码
    JS string 转 Byte64[]
    Git cmd
  • 原文地址:https://www.cnblogs.com/TheoryDance/p/14507395.html
Copyright © 2011-2022 走看看