SpringBoot整合SpringSecurity、MyBatis-Plus综合实例:认证、授权

ops/2025/3/1 5:23:30/

 Spring Security 安全框架,系列文章:

《SpringSecurity创建一个简单的自定义表单的认证应用》

《SpringSecurity中的过滤器链与自定义过滤器》

《SpringSecurity实现自定义用户认证方案》

《SpringSecurity密码编码器:使用BCrypt算法加密、自定义密码编码器》

《SpringSecurity基于配置方法控制访问权限:MVC匹配器、Ant匹配器》

《 SpringSecurity基于注解实现方法级别授权:@PreAuthorize、@PostAuthorize、@Secured》

《SpringSecurity处理器:登录成功处理器、登录失败处理器、无权限处理器、注销成功处理器》

《SpringSecurity获取当前登录用户信息》

《SpringBoot整合SpringSecurity、MyBatis-Plus综合实例:认证、授权》

1、Spring Security 框架的简介

Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,它是 Spring 项目组中用来提供安全认证服务的框架,能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案。

Spring Security 的前身是 Acegi Security。它是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。Spring Security 采用了 AOP(面向切面编程)思想,并基于 Servlet 过滤器实现。

下面将介绍 Spring Boot 整合 Spring Security 、MyBatis-Plus 实现一个认证与授权应用,执行结果如下如:

(1)登录页面

(2)登录成功后,跳转至首页:

2、数据库准备

使用 MySQL 数据库,设计一个自定义的数据表结构,并添加数据。

-- 创建数据库
CREATE DATABASE IF NOT EXISTS db_admin; USE db_admin;-- 创建自定义的用户信息表
DROP TABLE IF EXISTS user_info;CREATE TABLE user_info(id BIGINT(20) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',user_name VARCHAR(50) NOT NULL COMMENT '用户名称',PASSWORD VARCHAR(60) COMMENT '用户密码(使用BCrypt算法加密)',ENABLE TINYINT(4) NOT NULL DEFAULT 1 COMMENT '是否启用',permission VARCHAR(500) COMMENT '权限列表,多个权限之间用英文逗号分割',KEY key_username (user_name)
);-- 插入数据1(密码明文:123456,已使用BCrypt算法加密)
INSERT INTO user_info(user_name,PASSWORD,ENABLE,permission) 
VALUES('admin','$2a$10$5N08Ve0QrdxiV7Y3i3zoOObZNcSjudadfrsLujxJ6HdrozrEWQGsW',
1,'USER:GET,USER:ADD,USER:UPDATE,USER:DELETE');-- 插入数据2
INSERT INTO user_info(user_name,PASSWORD,ENABLE,permission) 
VALUES('panjunbiao','$2a$10$3pB4ng8aPtZcQbU7WjLB7.lnyH/za8Tx7BqdG71o/OoWHba.wVveK',
1,'USER:GET,USER:ADD');-- 查询
SELECT * FROM user_info;

3、创建项目

【示例】Spring Boot 整合 Spring Security 、MyBatis-Plus 实现一个认证与授权应用。

3.1 创建 Spring Boot 项目

创建 Spring Boot 项目,项目结构如下图:

3.2 添加 Maven 依赖

在 pom.xml 配置文件中添加 Spring Security、MyBatis-Plus、JDBC、BCrypt 加密框架、Thymeleaf 模板引擎、Lombok 依赖。

<!-- Spring Boot 依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency><!-- Spring Security 依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId><version>2.7.18</version>
</dependency><!-- Spring Security 内置的 BCrypt 加密框架 -->
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-crypto</artifactId><version>6.4.2</version>
</dependency><!-- MyBatis-Plus 依赖 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.7</version>
</dependency><!-- MySQL 的 JDBC 数据库驱动 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency><!-- Lombok 依赖 -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency><!-- 引入Thymeleaf模板引擎 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

3.3 配置数据库连接参数

在项目的 application.yml 文件中,添加数据库连接的配置。

# 开发环境
server:port: 8085servlet:session:timeout: 30mtomcat:uri-encoding: UTF-8# Spring配置
spring:application:name: SecurityManage#

http://www.ppmy.cn/ops/162141.html

相关文章

Linux:Shell环境变量与命令行参数

目录 Shell的变量功能 什么是变量 变数的可变性与方便性 影响bash环境操作的变量 脚本程序设计&#xff08;shell script&#xff09;的好帮手 变量的使用&#xff1a;echo 变量的使用&#xff1a;HOME 环境变量相关命令 获取环境变量 环境变量和本地变量 命令行…

Linux内核自定义协议族开发指南:理解net_device_ops、proto_ops与net_proto_family

在Linux内核中开发自定义协议族需要深入理解网络协议栈的分层模型。net_device_ops、proto_ops和net_proto_family是三个关键结构体,分别作用于不同的层次。本文将详细解析它们的作用、交互关系及实现方法,并提供一个完整的开发框架。 一、核心结构体的作用与层级关系 struct…

科技快讯 | DeepSeek宣布开源DeepGEMM;多个团队开发AI论文反识别技术;OpenAI GPT 4.5现身Android测试版,即将发布

DeepSeek宣布开源DeepGEMM 财联社2月26日电&#xff0c;Deepseek于开源周第三天宣布开源DeepGEMM。DeepGEMM 是一个专为简洁高效的 FP8 通用矩阵乘法&#xff08;GEMM&#xff09;设计的库&#xff0c;具有细粒度缩放功能&#xff0c;如 DeepSeek-V3 中所提出。它支持普通和混合…

可编辑73页PPT | DeepSeek自学手册-从理论模型训练到实践模型应用

荐言分享&#xff1a;DeepSeek自学手册——从理论模型训练到实践模型应用》是一本全面介绍DeepSeek系列模型的自学指南。该手册详细阐述了DeepSeek V3和R1两大模型的理论基础、训练过程、性能表现、使用技巧、应用场景以及替代方案&#xff0c;旨在帮助用户全面了解并高效使用D…

【Java项目】基于Spring Boot的论坛管理系统

【Java项目】基于Spring Boot的论坛管理系统 技术简介&#xff1a;采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介&#xff1a;论坛管理系统是一个基于Web的在线平台&#xff0c;主要分为前台和后台两大功能模块。前台功能模块包括&#xff08;1&#xff09;首…

HTTP非流式请求 vs HTTP流式请求

文章目录 HTTP 非流式请求 vs 流式请求一、核心区别 服务端代码示例&#xff08;Node.js/Express&#xff09;非流式请求处理流式请求处理 客户端请求示例非流式请求&#xff08;浏览器fetch&#xff09;流式请求处理&#xff08;浏览器fetch&#xff09; Python客户端示例&…

编写MongoDB 开机启动脚本

1、创建脚本文件 touch /etc/init.d/mongodb.sh 2、添加启动脚本内容 先执行 vi /etc/init.d/mongodb.sh 将以下内容添加到mongodb.sh文件中&#xff1a; #!/bin/bash # # MongoDB startup script #### BEGIN INIT INFO # Provides: mongodb # Required-Start: …

DeepSeek R1 训练策略4个阶段解析

DeepSeek R1 训练策略解析 DeepSeek R1 训练策略解析1. 冷启动监督微调&#xff08;Cold Start SFT&#xff09;**该阶段的主要目标**&#xff1a; 2. 面向推理的强化学习&#xff08;RL for Reasoning&#xff09;**该阶段的主要目标**&#xff1a; 3. 拒绝采样和监督微调&…