1. 程式人生 > 實用技巧 >java JWT 生成和解析token

java JWT 生成和解析token

採用io.jsonwebtoken 版

匯入maven

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-api</artifactId>
            <version>0.11.2</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-impl</artifactId>
            <version>0.11.2</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if
Gson is preferred --> <version>0.11.2</version> <scope>runtime</scope> </dependency>

例項

        //生成token
        Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
        HashMap< String, Object > map = new HashMap<>( );
        map.put(
"username", "張三"); map.put("password", "123456"); String token = Jwts.builder( ).setClaims(map).setExpiration(DateUtils.addDays(new Date( ), 1)).signWith(key).compact( ); //過期時間 System.err.println("token=" + token); //解析token Jws< Claims > claimsJws = Jwts.parserBuilder( ).setSigningKey(key).build( ).parseClaimsJws(token); Claims body
= claimsJws.getBody( ); System.err.println(body.get("username")); System.err.println(body.get("password")); // .setIssuer("me") //發行人 // .setSubject("Bob") //專案 // .setAudience("you") //使用者 // .setExpiration(expiration) //過期時間 // .setNotBefore(notBefore) //a java.util.Date // .setIssuedAt(new Date()) // 發行時間 // .setId(UUID.randomUUID()) //id

更多方法:https://github.com/jwtk/jjwt#asymmetric-keys