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

Spring Boot JWT认证示例项目

项目简介

这是一个基于Spring Boot的REST API示例项目,集成了JWT(JSON Web Token)认证和Shiro权限管理框架,并使用Swagger/OpenAPI进行API文档管理。

stevensu1/EC0520

技术栈

  • Spring Boot 2.7.18
  • Apache Shiro 1.12.0
  • JWT (java-jwt 4.4.0)
  • SpringDoc OpenAPI (Swagger) 1.6.15
  • Java 8

主要功能

  1. JWT令牌认证

    • 用户登录获取JWT令牌
    • 基于JWT的无状态会话管理
  2. 权限管理

    • 基于Shiro的角色权限控制
    • 支持注解式权限控制(@RequiresRoles, @RequiresPermissions)
  3. API文档

    • 集成Swagger UI接口文档
    • 支持JWT认证的API测试

项目结构


src/main/java/com/example/demo/
├── DemoApplication.java          # 应用程序入口
├── auth/
│   └── CustomRealm.java         # Shiro自定义认证授权实现
├── config/
│   ├── ShiroConfig.java         # Shiro配置类
│   └── SwaggerConfig.java       # Swagger配置类
├── controller/
│   └── AuthController.java      # 认证相关接口
└── util/
└── JwtUtil.java            # JWT工具类

API接口说明

1. 登录接口

POST /login 参数:

  • username: 用户名
  • password: 密码 返回:
  • token: JWT令牌
  • msg: 响应消息

2. 受保护资源

GET /protected 要求:需要JWT认证

GET /role-protected 要求:需要'user'角色权限

快速开始

1. 环境要求

  • JDK 8+
  • Maven 3.6+

2. 构建和运行

# 克隆项目
git clone [项目地址]

# 进入项目目录
cd EC0520

# 编译打包
mvn clean package

# 运行项目
java -jar target/demo-0.0.1-SNAPSHOT.jar
Swagger UI: http://localhost:8080/swagger-ui.html
OpenAPI文档: http://localhost:8080/api-docs

## 安全配置
- JWT令牌默认有效期:24小时
- 所有API接口(除登录和Swagger文档外)都需要JWT认证
- 支持角色基础的访问控制
## 开发说明
1. 认证流程
   
   - 用户通过/login接口获取JWT令牌
   - 后续请求在Header中携带令牌: Authorization: Bearer <token>
2. 权限控制
   
   - 使用@RequiresAuthentication注解要求认证
   - 使用@RequiresRoles注解要求特定角色
   - 使用@RequiresPermissions注解要求特定权限
## 注意事项
1. 项目中的密钥(JWT_SECRET)仅用于演示,生产环境请修改为安全的密钥
2. 默认用户验证逻辑需要根据实际需求对接数据库
3. 生产环境部署时需要配置CORS和其他安全设置

这个README.md文件全面介绍了项目的主要功能、技术栈、项目结构、API接口、使用方法等信息,可以帮助其他开发者快速理解和使用这个项目。您可以根据实际需求对内容进行调整和补充。

 
http://www.xdnf.cn/news/7096.html

相关文章:

  • 【PRB】深度解析GaN中最浅的受主缺陷
  • 基于WebRTC的实时语音对话系统:从语音识别到AI回复
  • 数据结构 -- 树形查找(二)平衡二叉树
  • 【自然语言处理与大模型】向量数据库:Chroma使用指南
  • JAVA EE(进阶)_进阶的开端
  • 仿腾讯会议——退出房间
  • Linux概述:从内核到开源生态
  • DOM知识点
  • 2_Spring【IOC容器中获取组件Bean】
  • 计算机科技笔记: 容错计算机设计05 n模冗余系统 TMR 三模冗余系统
  • 【25软考网工】第六章(7)网络安全防护系统
  • 入门OpenTelemetry——应用自动埋点
  • 20242817-李臻-课下测试:基于商用密码的数字信封协议(AI)
  • 基于 STM32 的手持式安检金属探测器设计与实现
  • AI大模型学习二十六、使用 Dify + awesome-digital-human-live2d + ollama + ChatTTS打造数字人
  • 图绘Linux:基础指令脉络阁
  • 学习黑客Active Directory 入门指南(二)
  • C语言:在 Win 10 上,gcc 如何编译 调用 Tcl/Tk 的C程序
  • Jmeter使用及压测
  • Linux下 使用 SSH 完成 Git 绑定 GitHub
  • 【Linux】ELF与动静态库的“暗黑兵法”:程序是如何跑起来的?
  • 什么是迁移学习(Transfer Learning)?
  • .NET外挂系列:1. harmony 基本原理和骨架分析
  • GitHub 趋势日报 (2025年05月17日)
  • 【C++】unordered_map与set的模拟实现
  • 45 python csv(存储表格数据)
  • Day28 Python打卡训练营
  • 赋能企业级移动应用 CFCA FIDO+提升安全与体验
  • 题单:递归求和
  • 上集:一个前端的血泪复仇记 —— 静态部署的胜利