1. 程式人生 > 實用技巧 >yb課堂之登陸校驗Json Web Token實戰之封裝通用方法 《九》

yb課堂之登陸校驗Json Web Token實戰之封裝通用方法 《九》

引入相關依賴並開發JWT工具類,開發生產token和校驗token的方法

加入相關依賴

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.7.0</version>
        </dependency>

封裝生產token方法

封裝校驗token方法

JWTUtils.java

package
net.ybclass.online_ybclass.utils; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import net.ybclass.online_ybclass.domain.User; import java.util.Date; /** * JWT工具類 * 注意點: * 1、生成的token,是可以通過base64進行解密出銘文資訊 * 2、base64進行解密出明文資訊,修改再進行編碼,則會解密失敗 * 3、無法作廢已頒佈的token,除非改金鑰
*/ public class JWTUtils { /** * 過期時間,一週 */ static final long EXPIRE = 60000 * 60 * 24 * 7; /** * 加密金鑰 */ private static final String SECRET = "ybclass.net168"; /** * 令牌字首 */ private static final String TOKEN_PREFIX = "ybclass"; /** * 主題 */ private
static final String SUBJECT = "ybclass"; /** * 根據使用者資訊,生成令牌 * * @param user * @return */ public static String geneJsonWebToken(User user) { String token = Jwts.builder().setSubject(SUBJECT) .claim("head_img", user.getHeadImg()) .claim("id", user.getId()) .claim("name", user.getName()) .setIssuedAt(new Date()) //令牌頒佈時間 .setExpiration(new Date(System.currentTimeMillis() + EXPIRE)) //過期時間 .signWith(SignatureAlgorithm.HS256, SECRET) //加密方式 .compact(); token = TOKEN_PREFIX + token; return token; } /** * 校驗token方法 * * @param token * @return */ public static Claims checkJWT(String token) { try { final Claims claims = Jwts.parser() .setSigningKey(SECRET) .parseClaimsJws(token.replace(TOKEN_PREFIX, "")) .getBody(); return claims; } catch (Exception e) { return null; } } }