Spring Boot 3 认证模块

简介

liyao-spring-boot3-starter-auth 是一个基于 Spring Boot 3 的认证组件,提供了用户认证、权限校验等功能,可以快速集成到 Spring Boot 3 项目中,简化认证和授权的开发工作。

功能特性

  • 用户登录认证
  • 基于注解的权限校验
  • 可配置的路径过滤
  • 支持用户角色管理
  • 与 Spring Boot 3 无缝集成

安装方法

1、在项目的 pom.xml 文件中添加以下依赖

      <dependency>
    <groupId>io.github.liyao52033</groupId>
    <artifactId>liyao-spring-boot3-starter-auth</artifactId>
    <version>1.2.0</version>
</dependency>
    

2、创建数据库表

      SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
  `userAccount` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号',
  `userPassword` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '1442de8d3dfff7f35f2a5f7c108b02b6' COMMENT '密码',
  `userRole` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'user' COMMENT '用户角色:user/admin/ban',
  `accessKey` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '用户密钥',
  `secretKey` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '服务密钥',
  `userAvatar` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT 'https://aurora-1258839075.cos.ap-shanghai.myqcloud.com/user_avatar/1680499436154834947/sHPQruWl-1696599833532.jpg' COMMENT '用户头像',
  `userProfile` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '一个人的价值,不在于他拥有什么,而在于他能够为别人做些什么。”这句话强调了帮助和服务他人的重要性,不断地为他人奉献可以增加你的人生价值。' COMMENT '用户简介',
  `unionId` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '微信开放平台id',
  `mpOpenId` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '公众号openId',
  `userName` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '用户昵称',
  `createTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `isDelete` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `idx_unionId`(`unionId` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1896739267784413188 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户' ROW_FORMAT = DYNAMIC;

SET FOREIGN_KEY_CHECKS = 1;
    

配置说明

application.yml 中添加以下配置:

      spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/demo
    username: xxxx
    password: xxxxx
    
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: false
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath*:mapper/*.xml
  global-config:
    db-config:
      logic-delete-field: isDelete # 全局逻辑删除的实体字段名
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

liyao:
  auth:
    # 是否启用认证模块,默认为 true
    enabled: true
    # 允许直接访问的路径列表,不需要登录验证
    allowed-paths:
      - /api/public/**
      - /api/health/**
    

使用示例

_1. 用户登录认证

认证模块会自动拦截需要认证的请求,默认情况下,除了配置的 allowed-paths 和内置的一些路径(如 Swagger、登录注册接口等)外,其他接口都需要登录后才能访问。

_2. 基于注解的权限校验

使用 @AuthCheck 注解可以对方法进行权限校验:

加载中...

声明

作者: liyao

版权:本博客所有文章除特别声明外,均采用CCBY-NC-SA4.O许可协议。转载请注明!

最后更新于 2025-10-02 15:34 history