阿里云商业网站建设视频,淮南建设网,wordpress 被黑,个人怎么申请专利Spring Boot 3 整合 JWT#xff08;JSON Web Tokens#xff09;用于登录开发涉及多个步骤。JWT 是一种开放标准#xff08;RFC 7519#xff09;#xff0c;它定义了一种紧凑的、自包含的方式#xff0c;用于作为 JSON 对象在各方之间安全地传输信息。这些信息可以被验证和…Spring Boot 3 整合 JWTJSON Web Tokens用于登录开发涉及多个步骤。JWT 是一种开放标准RFC 7519它定义了一种紧凑的、自包含的方式用于作为 JSON 对象在各方之间安全地传输信息。这些信息可以被验证和信任因为它们是数字签名的。
以下是一个简单的步骤指南用于在 Spring Boot 3 应用中整合 JWT
1. 添加依赖
首先在你的 pom.xml 文件中添加 Spring Boot Web 和 JWT 相关的依赖
dependencies !-- Spring Boot Web Starter -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !-- JWT Library, 例如 jjwt -- dependency groupIdio.jsonwebtoken/groupId artifactIdjjwt/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)); }
}