当前位置: 首页>后端>正文

简单实现JWT登录验证

什么是JWT

JWT是josn web token 的简称是一种用于在网络应用之间安全地传递信息的开放标准。它由三部分组成:头部(Header)、载荷(Payload)和签名(Signature),他的主要作用是当用户通过身份验证成功后,服务器会生成一个 JWT,并将其作为响应的一部分返回给客户端。客户端在随后的请求中将 JWT 放在请求的头部、URL 参数或者请求体中发送给服务器。服务器接收到 JWT 后,会验证其完整性和有效性,并根据其中的信息对请求进行授权处理。

1.导入依赖

<!-- JWT依赖-->
<dependency>?
?<groupId> com.auth0</groupId>
?<artifactId>java-jwt</artifactId>
?<version>4.4.0</version>
</dependency>

2.编写生成JWT的工具类

import com.auth0.jwt.JWT;

import com.auth0.jwt.algorithms.Algorithm;

import java.util.Date;

import java.util.Map;

public class JwtUtil {

private static StringKEY="WYY";

//接收业务数据,生成token并返回

? ? public static StringgenToken(Map claims){

return JWT.create()

.withClaim("claims",claims)

.withExpiresAt(new Date(System.currentTimeMillis()+1000*60*60*12))

.sign(Algorithm.HMAC256(KEY));

}

//接收token,验证token,并返回业务数据

? ? public static MapparseToken(String token){

return JWT.require(Algorithm.HMAC256(KEY))

.build()

.verify(token)

.getClaim("claims")

.asMap();

}

}

3.在controller层的登录接口中使用该工具类,在用户登录的时候生成token,并返回个前端,用户登录后把当前的token存入reids中

简单实现JWT登录验证,第1张
u

4.创建一个拦截器,在执行登录和注册以外的方法的时候拦截,后去请求头中的token(图中以Authorization为例),然后再与redis中的token值进行对比判断当期账号是否是登录状态

拦截器

简单实现JWT登录验证,第2张

使用拦截器

简单实现JWT登录验证,第3张

这样一个简单的登录验证就完成,每当发起请求的时候,除了你写的不拦截的请求地址,他都会在请求头中获取到Authorization的值,如果没有的话,会返回给前端一个401,如果存在Authorization值,会把这个值与redis中的token值进行对比,判断是否相等,相同就进行放行,不行等就拦截返回401,这个与redis中的值进行对比主要是用来实现修改密码功能,和登录时间过长的失效。

如果你不会使用redis下面有一个简单的使用方法可以介绍给你

1.在pom.xml中导入依赖

<dependency>

? ? <groupId>org.springframework.boot

? ? <artifactId>spring-boot-starter-data-redis

</dependency>

2.启动redis(如果没有redis建议去网上找一找资源下一个)

3.以下是一个简单使用的例子

简单实现JWT登录验证,第4张

https://www.xamrdz.com/backend/33y1929217.html

相关文章: