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

  • 相关阅读:
    spark 程序 TopN FileSort SecondarySort 的出错解决办法
    预报温度和体感温度不是一回事
    搜索引擎 搜索技巧
    scrapy 爬虫框架
    scala-sbt
    英语削笔机
    php 一句话木马
    [CS充实之路] CS50 WEEK 1
    UBUNTU 16.04 编译 OPENJDK8
    使用logrotate分割Tomcat的catalina日志
  • 原文地址:https://www.cnblogs.com/TheoryDance/p/14507395.html
Copyright © 2020-2023  润新知