哪個(gè)做簡(jiǎn)歷的網(wǎng)站比較好石家莊最新新聞事件
1、什么是JWT
- jwt可以生成一個(gè)加密的token,作為用戶登錄的令牌,當(dāng)用戶登陸成功之后,發(fā)放給客戶端。請(qǐng)求需要登錄的資源或者接口的時(shí)候,將token攜帶,后端驗(yàn)證token是否合法。
- jwt有三部分組成:
- A:Header,{"type":"JWT","alg":"HS256"}固定
- B:playload,存放信息,比如,用戶id,過期時(shí)間等,可以被解密,不能存放敏感信息
- C:簽證,A和B加上秘鑰 加密而成,只要密鑰不丟失,可以認(rèn)為是安全的。
- jwt驗(yàn)證,主要就是驗(yàn)證C部分是否合法
2、生成JWT令牌
- 引入依賴
<!-- JWT依賴--> <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency>
2、構(gòu)建jwt生成器
public static String createToken(String username, long tokenExpirationInSeconds) {// 設(shè)置JWT的過期時(shí)間Date now = new Date();Date expiryDate = new Date(now.getTime() + tokenExpirationInSeconds * 1000);// 創(chuàng)建JWT的Builderreturn Jwts.builder()// 不推薦在生產(chǎn)環(huán)境中使用無狀態(tài)的JWT,這里僅為示例.signWith(SignatureAlgorithm.HS512, "secret".getBytes()).setSubject(username) // 設(shè)置JWT的主題,這里存放用戶名.setIssuedAt(now).setExpiration(expiryDate).compact();}
3、從jwt解析出username
public static String parseJWTAndGetUsername(String secretKey, String token) {// 創(chuàng)建JwtParser對(duì)象并傳入密鑰JwtParser parser = Jwts.parser().setSigningKey(secretKey.getBytes());// 解析JWT并獲取Claims對(duì)象Claims claims = parser.parseClaimsJws(token).getBody();// 從Claims對(duì)象中獲取用戶名return claims.getSubject();}