spring boot3登录开发(整合jwt)

2024-03-27 01:04

本文主要是介绍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.propertiesapplication.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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/850448

相关文章

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依