1.方法:
在判断该人员访问的路径是否合法,是否存在未登录就访问其他路径,这时候我们就需要,进行登录认证。其中有两种方法,一种是加上过滤器,一种是进行JWT令牌。
(1)JWT令牌
令牌就是一段字符串,其要求承载业务数据减少后续请求查询数据库的次数和方篡改,保证信息的合法性和有效性。
JWT(JSON WEB TOKEN)
简介:
定义了一种简洁的、包含的格式,用于通信双方一json数据格式安全的传输信息。文章来源:https://www.toymoban.com/news/detail-824394.html
组成:
第一部分:Header,记录令牌类型、签名算法
第二部分:Payload(有效载荷),携带一些自定义信息、默认信息等
第三部分:Signature(签名),防止Token被篡改、确保安全性。将header、payload,并加入指定密钥,通过指定签名算法计算而来
例如:
文章来源地址https://www.toymoban.com/news/detail-824394.html
生成:
public void testGen() {
Map<String, Object> claims = new HashMap<>();
claims.put("id", 1);
claims.put("username", "张三");
//生成jwt的代码
String token = JWT.create()
.withClaim("user", claims)//添加载荷
.withExpiresAt(new Date(System.currentTimeMillis() + 1000))//添加过期时间
.sign(Algorithm.HMAC256("itheima"));//指定算法,配置秘钥
System.out.println(token);
}
验证
//@Test
public void testParse() {
//定义字符串,模拟用户传递过来的token
String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoxLCJ1c2VybmFtZSI6IuW8oOS4iSJ9LCJleHAiOjE2OTQzMjUzMzB9.dFmeOG04w6EfnCue4CFS-x-XMRv145EfsY8wnchbxL4";
JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("itheima")).build();
DecodedJWT decodedJWT = jwtVerifier.verify(token);//验证token,生成一个解析后的JWT对象
Map<String, Claim> claims = decodedJWT.getClaims();
System.out.println(claims.get("user"));
//如果篡改了头部和载荷部分的数据,那么验证失败
//如果秘钥改了,验证失败
//token过期
}
到了这里,关于springboot登录认证JWT令牌的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!