项目名称:基于Sa-Token的RBAC权限管理系统后端开发
项目概述
开发一个企业级的后端权限管理系统,采用RBAC(基于角色的访问控制)模型,使用Sa-Token作为认证与授权框架。系统需支持PC端和移动端登录,并记录操作日志与登录日志,为后续审计和监控提供数据支持。
技术栈要求
开发语言:Java
框架:Spring Boot 3.x,MyBatis-Plus
权限框架:Sa-Token(最新稳定版)
数据库:MySQL ,Redis(用于Sa-Token存储会话)
日志框架:SLF4J + Logback
API风格:RESTful,JSON交互
构建工具:Maven
核心功能模块
用户管理
用户的增删改查
用户状态(启用/禁用)
用户与角色关联(一个用户可拥有多个角色)
角色管理
角色的增删改查
角色与权限(菜单/权限点)关联
权限管理
权限资源定义(如菜单、按钮、API接口)
权限树形展示
支持权限标识(如 sys:user:add)
登录认证
PC端登录(账号密码、验证码可选)
移动端登录(支持手机号+密码或短信验证码)
登录成功后签发Token(Sa-Token自动管理)
登出、Token续签、单点登录控制(可选)
操作日志
记录用户的关键操作(如增删改)
记录内容包括:操作人、IP、操作时间、请求参数、执行结果等
使用AOP + 自定义注解实现
登录日志
记录每次登录尝试(成功/失败)
记录内容包括:用户名、登录时间、IP、设备类型(PC/移动)、登录结果
数据库设计
需要设计以下核心表(可扩展):
sys_user:用户表
sys_role:角色表
sys_permission:权限表(菜单/按钮/API)
sys_user_role:用户-角色关联表
sys_role_permission:角色-权限关联表
sys_operation_log:操作日志表
sys_login_log:登录日志表
表字段需包含必要的审计字段(如创建时间、更新时间),并使用合适的索引优化查询。
模块划分(包结构)
建议采用分层架构:
controller:API接口层
service:业务逻辑层
mapper:数据访问层(MyBatis-Plus接口)
entity:实体类
dto:数据传输对象
config:配置类(Sa-Token、跨域等)
aspect:日志切面
utils:工具类
权限设计细节
基于RBAC动态权限校验,使用Sa-Token的注解 @SaCheckPermission 拦截API。
支持菜单/权限的树形结构,前端可动态生成路由。
提供接口获取当前用户的权限列表、菜单树。
日志记录实现
操作日志:通过自定义注解(如 @OperationLog)标记需要记录的方法,AOP切面记录请求内容。
登录日志:在登录接口中手动记录,失败时也需记录。
日志异步存储,避免影响主业务性能(可使用线程池或消息队列)。
安全考虑
密码加密存储(BCrypt)
防止SQL注入(MyBatis-Plus预编译)
敏感信息脱敏(如手机号、身份证)
接口防重放(可选)
输出要求
请提供:
完整的数据库建表SQL脚本。
核心代码(包括实体类、Mapper、Service、Controller、配置类、切面类等)的关键实现。
Sa-Token的集成配置与权限校验示例。
登录接口(PC和移动端)的实现代码。
操作日志和登录日志的记录逻辑代码。