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对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

java中long的一些常见用法

《java中long的一些常见用法》在Java中,long是一种基本数据类型,用于表示长整型数值,接下来通过本文给大家介绍java中long的一些常见用法,感兴趣的朋友一起看看吧... 在Java中,long是一种基本数据类型,用于表示长整型数值。它的取值范围比int更大,从-922337203685477

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过