溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在springboot運行token?

發(fā)布時間:2020-05-29 16:02:53 來源:億速云 閱讀:304 作者:鴿子 欄目:編程語言

一、使用maven引入jjwt包

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

二、生成token的方式

新建一個生成token的類

package com.example.demo.controller;

import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

public class CreateJwt {
    public static void main(String[] args) {
        //Jwts.builder()生成
        //Jwts.parser()驗證
        JwtBuilder jwtBuilder =  Jwts.builder()
                .setId("123")
                .setSubject("夢陽")    //用戶名
                .setIssuedAt(new Date())//登錄時間
                .signWith(SignatureAlgorithm.HS256, "my-123").setExpiration(new Date(new Date().getTime()+60000))//設置過期時間
                .claim("role","admin"); //自定義屬性
        //前三個為載荷playload 最后一個為頭部 header
        System.out.println(jwtBuilder.compact());

    }

}

運行結果為:

eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2NjYiLCJzdWIiOiLlsI_pqawiLCJpYXQiOjE1NjMyODU2MTB9.iKtLy0T5ZzvzS2sjgcs5WyuM7cofmnzxzml7wicrTnA

三、新建一個類來解碼剛剛生成的token

package com.example.demo.controller;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;

import java.text.SimpleDateFormat;

//token的解析
//有狀態(tài)登錄  服務器端保存用戶信息
//無狀態(tài)登錄  服務器端沒有保存用戶信息   無狀態(tài)效率比有狀態(tài)效率高
public class PraseJwtTest {
    public static void main(String[] args) {
        Claims claims = Jwts.parser()
                .setSigningKey("my-123")
                //.parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2NjYiLCJzdWIiOiLlsI_pqawiLCJpYXQiOjE1NjMyODU2MTB9.iKtLy0T5ZzvzS2sjgcs5WyuM7cofmnzxzml7wicrTnA")
                .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxMjMiLCJzdWIiOiLmoqbpmLMiLCJpYXQiOjE1ODIwMDM5MzIsImV4cCI6MTU4MjAwMzk5Miwicm9sZSI6ImFkbWluIn0.vN0pcBVNIixcqp6MsSmGWWVyCc4uOkTpcd8MUDHcn4A")
                .getBody();
        System.out.println("用戶id:"+claims.getId());
        System.out.println("用戶名:"+claims.getSubject());
        System.out.println("用戶時間:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(claims.getIssuedAt()));System.out.println("過期時間:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(claims.getExpiration()));
        System.out.println("用戶角色:"+claims.get("role"));
    }
}

運行結果為:
用戶id:123
用戶名:夢陽
用戶時間:2020-02-18 13:32:12
過期時間:2020-02-18 13:33:12
用戶角色:admin

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI