springboot的jwt
时间: 2023-09-30 18:06:21 浏览: 115
Spring Boot是一个用于构建Java应用程序的开源框架,而JWT(JSON Web Token)是一种用于在网络应用间安全传输信息的开放标准。在Spring Boot中使用JWT可以实现身份验证和授权功能。
要在Spring Boot中使用JWT,首先需要添加相应的依赖。常见的依赖有jjwt或者Auth0的java-jwt库。可以在项目的pom.xml文件中添加以下依赖:
```xml
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
```
接下来,你需要创建一个JWT工具类来生成和验证JWT。这个工具类通常包含以下几个方法:
1. 生成JWT:使用用户信息和密钥生成一个JWT。
2. 验证JWT:解析并验证接收到的JWT是否有效和合法。
3. 获取用户信息:从JWT中提取用户信息。
下面是一个简单的示例:
```java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
public class JwtUtils {
private static final String SECRET_KEY = "yourSecretKey"; // 密钥,需要保密
private static final long EXPIRATION_TIME = 864_000_000; // 过期时间,这里设置为10天
public static String generateToken(User user) {
Date now = new Date();
Date expiryDate = new Date(now.getTime() + EXPIRATION_TIME);
return Jwts.builder()
.setSubject(Long.toString(user.getId()))
.setIssuedAt(now)
.setExpiration(expiryDate)
.signWith(SignatureAlgorithm.HS512, SECRET_KEY)
.compact();
}
public static Long getUserIdFromToken(String token) {
Claims claims = Jwts.parser()
.setSigningKey(SECRET_KEY)
.parseClaimsJws(token)
.getBody();
return Long.parseLong(claims.getSubject());
}
public static boolean validateToken(String token) {
try {
Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token);
return true;
} catch (Exception e) {
return false;
}
}
}
```
在使用JWT的时候,需要注意保护好密钥,防止泄露。另外,还可以进行一些其他的配置,比如添加过滤器用于解析和验证JWT等。希望这个简单的示例对你有帮助!如果你有其他问题,请随时问我。
阅读全文