本文主要是介绍spring boot3登录开发(整合jwt),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Spring Boot 3 整合 JWT(JSON Web Tokens)用于登录开发涉及多个步骤。JWT 是一种开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。这些信息可以被验证和信任,因为它们是数字签名的。
以下是一个简单的步骤指南,用于在 Spring Boot 3 应用中整合 JWT:
1. 添加依赖
首先,在你的 pom.xml
文件中添加 Spring Boot Web 和 JWT 相关的依赖:
<dependencies> <!-- Spring Boot Web Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- JWT Library, 例如 jjwt --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>你的jjwt版本号</version> </dependency> <!-- 其他依赖 -->
</dependencies>
2. 配置 JWT
创建一个配置类,配置 JWT 的密钥和有效期等:
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class JwtConfig { public static final String SECRET_KEY = "你的密钥"; // 生产环境中请确保此密钥的安全性 public static final long JWT_EXPIRATION_MS = 86400000; // 24小时 @Bean public SignatureAlgorithm signatureAlgorithm() { return SignatureAlgorithm.HS512; // 使用HS512算法 }
}
在application.properties
或application.yml
文件中配置JWT相关的属性,如密钥、过期时间等。
jwt: secret: your-secret-key expiration: 86400000 # 1天,单位:毫秒
3. 创建 JWT 工具类
创建一个工具类,用于生成和验证 JWT:
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import java.util.Date;
import java.util.function.Function; @Component
public class JwtTokenUtil { @Autowired private SignatureAlgorithm signatureAlgorithm; public String generateToken(String userId) { Date now = new Date(); Date expirationDate = new Date(now.getTime() + JwtConfig.JWT_EXPIRATION_MS); return Jwts.builder() .setClaims(getClaims(userId)) .setExpiration(expirationDate) .signWith(signatureAlgorithm, JwtConfig.SECRET_KEY) .compact(); } private Claims getClaims(String userId) { return Jwts.claims().setId(userId); } public String getUserIdFromToken(String token) { Claims claims = getAllClaimsFromToken(token); return claims.getId(); } public boolean validateToken(String token, String userId) { final String userIdFromToken = getUserIdFromToken(token); return (userIdFromToken != null && userId.equals(userIdFromToken)); } private Claims getAllClaimsFromToken(String token) { Claims claims; try { claims = Jwts.parser() .setSigningKey(JwtConfig.SECRET_KEY) .parseClaimsJws(token) .getBody(); } catch (SignatureException e) { claims = null; } return claims; }
}
4. 创建登录接口
在你的 Controller 中,创建处理登录请求的接口:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; @RestController
@RequestMapping("/api/auth")
public class AuthController { @Autowired private AuthService authService; @PostMapping("/login") public ResponseEntity<?> login(@RequestBody LoginRequest loginRequest) { String token = authService.login(loginRequest); return ResponseEntity.ok(new TokenResponse(token)); }
}
这篇关于spring boot3登录开发(整合jwt)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!