项目简介
本项目是基于Spring Boot和Spring Security以及JWT(JSON Web Token)搭建的权限管理系统。它为中大型应用提供了一套完整的安全框架,可实现用户认证、授权、权限管理等功能,支持多种权限校验方式,还具备自定义的异常处理和跨域配置。
项目的主要特性和功能
认证与授权
- 用户认证:基于用户名和密码,利用Spring Security管理认证流程。
- 权限管理:采用RBAC模型,支持
hasAuthority
、hasRole
等多种权限校验方式。 - 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】