littlebot
Published on 2025-04-12 / 4 Visits
0

【源码】基于Spring Security和JWT的权限管理系统

项目简介

本项目是基于Spring Boot和Spring Security以及JWT(JSON Web Token)搭建的权限管理系统。它为中大型应用提供了一套完整的安全框架,可实现用户认证、授权、权限管理等功能,支持多种权限校验方式,还具备自定义的异常处理和跨域配置。

项目的主要特性和功能

认证与授权

  • 用户认证:基于用户名和密码,利用Spring Security管理认证流程。
  • 权限管理:采用RBAC模型,支持hasAuthorityhasRole等多种权限校验方式。
  • JWT支持:使用JWT保障用户会话身份安全。
  • 自定义权限校验:可自定义方法灵活控制用户访问权限。

异常处理

  • 认证失败处理:自定义处理器返回统一JSON格式错误信息。
  • 授权失败处理:自定义处理器处理用户访问无权限资源的异常。

跨域支持

支持跨域请求,可配置允许的域名、请求方式、请求头等。

其他功能

  • Redis缓存:使用Redis缓存用户信息和JWT,提升系统性能。
  • 自定义过滤器:实现JWT认证过滤器,确保请求都经过身份验证。

安装使用步骤

1. 环境准备

  • Java 8 或更高版本
  • Maven 3.x
  • MySQL 5.7 或更高版本
  • Redis

2. 数据库配置

在MySQL中创建数据库,执行以下SQL创建用户表和权限表: sql CREATE TABLE `sys_user` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `user_name` VARCHAR(64) NOT NULL DEFAULT 'NULL' COMMENT '用户名', `nick_name` VARCHAR(64) NOT NULL DEFAULT 'NULL' COMMENT '昵称', `password` VARCHAR(64) NOT NULL DEFAULT 'NULL' COMMENT '密码', `status` CHAR(1) DEFAULT '0' COMMENT '账号状态(0正常 1停用)', `email` VARCHAR(64) DEFAULT NULL COMMENT '邮箱', `phonenumber` VARCHAR(32) DEFAULT NULL COMMENT '手机号', `sex` CHAR(1) DEFAULT NULL COMMENT '用户性别(0男,1女,2未知)', `avatar` VARCHAR(128) DEFAULT NULL COMMENT '头像', `user_type` CHAR(1) NOT NULL DEFAULT '1' COMMENT '用户类型(0管理员,1普通用户)', `create_by` BIGINT(20) DEFAULT NULL COMMENT '创建人的用户id', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', `update_by` BIGINT(20) DEFAULT NULL COMMENT '更新人', `update_time` DATETIME DEFAULT NULL COMMENT '更新时间', `del_flag` INT(11) DEFAULT '0' COMMENT '删除标志(0代表未删除,1代表已删除)', PRIMARY KEY (`id`) ) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

3. 配置文件

application.yml中配置数据库和Redis连接信息: yaml spring: datasource: url: jdbc:mysql://localhost:3306/xx_security?characterEncoding=utf-8&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver redis: host: localhost port: 6379

4. 启动项目

在项目根目录下执行以下命令启动项目: bash mvn spring-boot:run

5. 访问项目

项目启动后,可通过以下接口访问: - 登录接口:POST /user/login,传入用户名和密码登录,返回JWT。 - 测试接口:GET /hello,需认证和权限才能访问。

示例

登录示例

bash curl -X POST http://localhost:8080/user/login -H "Content-Type: application/json" -d '{"userName": "admin", "password": "123456"}'

访问受保护资源

bash curl -X GET http://localhost:8080/hello -H "Authorization: Bearer <JWT>"

依赖

  • Spring Boot
  • Spring Security
  • MyBatis Plus
  • Redis
  • JWT
  • FastJson

许可证

本项目采用MIT许可证,详情请参阅LICENSE文件。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】