springboot运行token方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot运行token方式相关的知识,希望对你有一定的参考价值。
一、使用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方式的主要内容,如果未能解决你的问题,请参考以下文章
聊聊如何让springboot拦截器的执行顺序按我们想要的顺序执行
SpringBoot集成FastDFS+Nginx整合基于Token的防盗链
add application window with unknown token XXX Unable to add window;is your activity is running?(代码片段
add application window with unknown token XXX Unable to add window;is your activity is running?(代码片段
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段