JWT结合Shiro一起使用按例

73 阅读1分钟

1. 背景

JWT结合shiro在一起可以实现登录,本文就可以详细的做一些阐述

2. JWT 使用demo

public class JWTTest {

    private Long time = 1000 * 60 * 60 * 24L;

    private String signature = "admin";
    @Test
    public void test(){
        JwtBuilder jwtBuilder = Jwts.builder();
        String jwtToken = jwtBuilder.setHeaderParam("typ", "JWT")
                .setHeaderParam("alg", "HS256")
                .claim("username", "roy")
                .claim("role", "admin")
                .setSubject("admin-test")
                .setExpiration(new Date(System.currentTimeMillis() + time))
                .setId(UUID.randomUUID().toString())
                //signature
                .signWith(SignatureAlgorithm.HS256, signature)
                .compact();
        System.out.println(jwtToken);
        System.out.println("开始解密");
        parse(jwtToken);
    }


    public void parse(String jwtToken){
        JwtParser jwtParser = Jwts.parser();
        Jws<Claims> claimsJws = jwtParser.setSigningKey(signature)
                .parseClaimsJws(jwtToken);
        Claims claims = claimsJws.getBody();
        System.out.println(claims.get("username"));
        System.out.println(claims.get("role"));
        System.out.println(claims.getId());
        System.out.println(claims.getSubject());
        System.out.println(claims.getExpiration());
    }
}