【问题标题】:How To set and get content of Payload in JWT Token如何在 JWT Token 中设置和获取 Payload 的内容
【发布时间】:2019-05-21 15:48:13
【问题描述】:

我在 Spring Boot 中创建了一个 JWT 令牌来存储用户详细信息。当我使用 Jwttokenutil.getUsernameFromToken(authToken) [ authToken is the token pass ] 方法时,我将数据设置为主题。同样,我想将数据集设置为包含其他用户详细信息的有效负载。但我无法得到它。

======= 下面是我的令牌生成方法/代码:========

public String generateToken(HashMap<String, Object> userData,String subject)
    {
        String jwtToken="";

                System.out.println("in generate token method : " + subject);

        jwtToken = Jwts.builder()
                .setSubject(subject)   // subject is dbname
                .claim("userDetails", userData)
                .setPayload(userData.toString())
                .setIssuedAt(new Date())
                .setExpiration(new Date(System.currentTimeMillis() + 60*60*5*1000))
                .signWith(SignatureAlgorithm.HS256, "secretkey") 
                .compact();


                System.out.println("userData " + userData);

        return jwtToken;
    }

======= 下面是我创建的获取有效负载数据的方法 ======

public Object getPayloadFromToken(String token)
    {
        Claims body= Jwts.parser()
        .setSigningKey("secretkey")
        .parseClaimsJws(token)
        .getBody();

        System.out.println("userdet==========> " + body.get("userDetails") );
        return body.get("userDetails");
    }

=== 但我收到此错误 ===

java.lang.IllegalStateException:不能同时指定“payload”和“claims”。任选其一。

【问题讨论】:

    标签: jwt


    【解决方案1】:

    晚了,但我希望它对某人有用。 .setPayload (...) 用于创建我们定义的有效负载,您收到声明的错误是因为 .setPayload (...) 不应与以下任何一种一起使用 .setSubject (...) 。宣称 (...) .setIssuedAt (....) .setExpiration (...)

    【讨论】:

      猜你喜欢
      • 2020-08-20
      • 2018-09-11
      • 2015-12-13
      • 2020-01-15
      • 2016-12-02
      • 1970-01-01
      • 2020-01-01
      • 2016-01-07
      • 2017-01-14
      相关资源
      最近更新 更多