springBoot jwt 生成token
时间: 2023-08-08 16:11:11 浏览: 179
SpringBoot集成JWT实现token验证的流程
在使用Spring Boot生成JWT(JSON Web Token)的过程中,你可以按照以下步骤进行操作:
1. 首先,确保你的Spring Boot项目已经集成了相关的依赖。你可以在`pom.xml`文件中添加以下依赖:
```xml
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.2</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
```
2. 创建一个`JwtUtil`类,用于生成JWT。你可以在该类中定义以下方法:
```java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class JwtUtil {
private final String secret = "your-secret-key";
private final long expiration = 86400000; // 过期时间,单位为毫秒
public String generateToken(String username) {
Date now = new Date();
Date expiryDate = new Date(now.getTime() + expiration);
return Jwts.builder()
.setSubject(username)
.setIssuedAt(now)
.setExpiration(expiryDate)
.signWith(SignatureAlgorithm.HS512, secret)
.compact();
}
public String getUsernameFromToken(String token) {
Claims claims = Jwts.parser()
.setSigningKey(secret)
.parseClaimsJws(token)
.getBody();
return claims.getSubject();
}
public boolean validateToken(String token) {
try {
Jwts.parser().setSigningKey(secret).parseClaimsJws(token);
return true;
} catch (Exception ex) {
return false;
}
}
}
```
3. 在你的用户认证逻辑中使用`JwtUtil`类生成和验证JWT。例如,在登录成功后生成JWT:
```java
@Autowired
private JwtUtil jwtUtil;
public ResponseEntity<?> login(String username, String password) {
// 验证用户名和密码逻辑...
// 生成JWT
String token = jwtUtil.generateToken(username);
// 返回响应,包含JWT
return ResponseEntity.ok(new JwtResponse(token));
}
```
这样,你就可以使用Spring Boot和JWT来生成和验证token了。记得将`your-secret-key`替换为你自己的密钥。
阅读全文