码迷,mamicode.com
首页 > 编程语言 > 详细

springboot运行token方式

时间:2020-02-18 15:01:28      阅读:36      评论:0      收藏:0      [点我收藏+]

标签:mil   用户名   sys   util   signature   test   ssm   code   system   

一、使用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的解析
//有状态登录  服务器端保存用户信息
//无状态登录  服务器端没有保存用户信息   无状态效率比有状态效率高
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

springboot运行token方式

标签:mil   用户名   sys   util   signature   test   ssm   code   system   

原文地址:https://blog.51cto.com/doublelinux/2471944

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!