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中存放的一个时间属性进行判断的。

  • 相关阅读:
    【MM系列】SAP 关于物料间的替代问题
    【MM系列】SAP MM模块-配置PO的创建时间
    为什么需要分布式配置中心?
    基于Redis的Spring cache 缓存介绍
    史上最全面的Spring-Boot-Cache使用与整合
    负载均衡
    分布式架构的演进
    9种高性能可用高并发的技术架构
    微服务写的最全的一篇文章
    Java设计模式——合成/聚合复用原则
  • 原文地址:https://www.cnblogs.com/TheoryDance/p/14507395.html
Copyright © 2011-2022 走看看