当前位置: 首页 > news >正文

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

 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: 8085
  servlet:
    session:
      timeout: 30m
  tomcat:
    uri-encoding: UTF-8

# Spring配置
spring:
  application:
    name: SecurityManage
  #

相关文章:

  • Java面试要点120 - Java虚拟机栈帧结构
  • JavaScript 指南:从入门到实战开发
  • 如何使用useContext进行全局状态管理?
  • Polardb开发者大会
  • 深度解读 Chinese CLIP 论文:开启中文视觉对比语言预训练
  • 数据库事务的基本要素(ACID)
  • Spring Cloud之注册中心之Nacos的使用
  • 【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝
  • 【前端基础】Day 4 CSS盒子模型
  • Spring IoC容器:原理与实现机制深度解析
  • 自动化设备对接MES系统找DeepSeek问方案
  • 二十三种设计模式
  • Pycharm使用matplotlib出现的问题(1、不能弹出图表 2、图表标题中文不显示)
  • MySQL 事务笔记
  • vue3 echarts使用datazoom,鼠标绘制实现放大与缩小(还原)
  • Redis 持久化方式:RDB(Redis Database)和 AOF(Append Only File)
  • MYSQL学习笔记(十):约束介绍(如:非空、唯一、主键、外键、级联、默认、检查约束)
  • 2025年前端高频面试题(含答案)
  • JavaScript知识点4
  • MySQL--索引的优化--LIKE模糊查询
  • 光谷 网站建设公司/百度推广开户费
  • 东莞大岭山做网站公司/网站运营
  • 网站开发语言太老/各大网站域名大全
  • 400套商业网站的静态模板/高端网站建设定制
  • 做的网站怎样打开速度快/磁力棒
  • 网站里的注册怎么做/长春百度网站优化