Jwt简单示例

  1. 在pom.xml中添加依赖
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.6.0</version>
</dependency>
  1. 编写创建Jwt的代码
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;

/**
 * @author Mi
 * @version 1.0
 * @description: TODO
 * @date 2022/1/6 15:37
 */
public class Jwt1Produce {
    public static void main(String[] args) {
        //创建jwt代码

        //Jwt的密钥
        String signKey="xiaofengKey";

        //创建jwt
        JwtBuilder jwtBuilder = Jwts.builder().setId("20181004").setSubject("qinghuaci")
                .setIssuedAt(new Date())
                .claim("userName","xiaofengcanyue")
                .claim("password","123456")
                //设置签名值
                .signWith(SignatureAlgorithm.HS256,signKey);
        System.out.println(jwtBuilder.compact());
    }

}

运行生成Jwt
在这里插入图片描述

  1. 测试解码生成的Jwt
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;

/**
 * 将2中的Jwt解码
 * @author Mi
 * @version 1.0
 * @description: TODO
 * @date 2022/1/6 16:14
 */
public class Jwt2Decrypt {
    private static final String signKey = "xiaofengKey";

    public static void main(String[] args) {
        String jwt = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIyMDE4MTAwNCIsInN1YiI6InFpbmdodWFjaSIsImlhdCI6MTY0MTU2NzM1NywidXNlck5hbWUiOiJ4aWFvZmVuZ2Nhbnl1ZSIsInBhc3N3b3JkIjoiMTIzNDU2In0.9ifnIgR-JiDECx0-XXYvL_QJafKaPhG9F5_CKZd1kGo";
        Claims body = Jwts.parser().setSigningKey(signKey).parseClaimsJws(jwt).getBody();
        System.out.println(body.get("userName"));
        System.out.println(body.get("password"));
        System.out.println(body.values());
    }
}

运行结果
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JWT(Json Web Tokens)是一种开放标准,用于在各方之间安全地传输信息,特别适合无状态的API。在Java中,我们可以使用一些库如`java.util.Base64`、`org.json`以及专门处理JWT的库如`jjwt`来创建和验证JWT。 下面是一个简单Java JWT示例: ```java import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; public class JwtExample { private static final String SECRET_KEY = "your-secret-key"; // 你的密钥 private static final long EXPIRATION_TIME_MINS = 60; // 过期时间(分钟) public static void main(String[] args) { Claims claims = Jwts.claims() .setSubject("John Doe") // 签名主体 .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME_MINS * 60 * 1000)) // 设置过期时间 .setIssuer("your-issuer"); // 发布者 String token = Jwts.builder() .setClaims(claims) .signWith(SignatureAlgorithm.HS256, SECRET_KEY) .compact(); // 生成JWT System.out.println("Generated JWT: " + token); } } ``` 在这个例子中,我们首先创建了一个包含声明(Claims)的对象,然后使用`Jwts.builder()`构建JWT,设置签名算法和密钥,最后通过`compact()`方法将其编码成字符串形式。 要在服务器端验证JWT,你需要解码并检查其签名和有效性: ```java import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jws; public Claims validateToken(String jwt) { try { Jws<Claims> jws = Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(jwt); return jws.getBody(); } catch (Exception e) { throw new RuntimeException("Invalid JWT", e); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值