# chenxin-auth **Repository Path**: gucb/chenxin-auth ## Basic Information - **Project Name**: chenxin-auth - **Description**: chenxin-auth - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-28 - **Last Updated**: 2026-03-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 晨信 (ChenXin) - OAuth2 扫码登录演示 ## 项目目的 **晨信**是一个**企业级 OAuth2 扫码登录平台**的完整演示系统,旨在帮助开发者理解 OAuth2.0 授权登录的流程和实现方式。通过本项目,您可以学习到: - OAuth2 授权码流程的完整实现(授权请求 → 用户登录 → 回调 → Token 换取) - 前后端分离架构下的 JWT Token 认证机制 - Spring Boot 2.7 + Vue 2.x 的完整开发流程 - 扫码登录的轮询状态检测机制 - 第三方应用集成方案 ## 技术栈 ### 后端 - **Spring Boot**: 2.7.12 - **JDK**: 17 - **Spring Security**: 安全框架 - **Spring Data JPA**: 数据持久层 - **H2 Database**: 内存数据库(开发测试用) - **JJWT**: JWT Token 生成与验证 ### 前端 - **Vue**: 2.7.14 - **Vue Router**: 3.6.5 - **Element UI**: 2.15.13 - **Axios**: HTTP 请求 - **QRCode.js**: 二维码生成 ## 项目结构 ``` chenxin-login-demo/ ├── backend/ # Spring Boot 后端 │ ├── src/main/java/ │ │ └── com/example/chenxin/ │ │ ├── config/ # 安全配置 │ │ ├── controller/ # 控制器 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # 实体类 │ │ ├── jwt/ # JWT 工具类 │ │ ├── repository/ # 数据仓库 │ │ └── service/ # 业务逻辑 │ └── src/main/resources/ │ ├── application.yml # 配置文件 │ └── data.sql # 初始化数据 │ ├── frontend/ # Vue2 前端 │ ├── src/ │ │ ├── api/ # API 接口 │ │ ├── assets/ # 静态资源 │ │ ├── components/ # 组件 │ │ ├── router/ # 路由配置 │ │ ├── utils/ # 工具函数 │ │ └── views/ # 页面视图 │ └── package.json │ └── README.md ``` ## 功能特性 ### 1. 扫码登录 - 生成二维码展示给用户 - 模拟手机扫码流程 - 手机端确认登录 - 页面自动轮询状态 - 登录成功后跳转首页 ### 2. 账号密码登录 - 用户名/密码验证 - JWT Token 签发 - 登录状态保持 ### 3. OAuth2 授权服务器 - 标准 OAuth2 授权码流程 - OIDC 用户信息服务 - 第三方应用集成 - JS SDK 嵌入支持 ### 4. 用户信息管理 - 查看当前登录用户信息 - 登出功能 ## 快速开始 ### 开发环境 Nginx 同域模式(推荐) 为了解决 OAuth2 跨域问题,开发环境使用 Nginx 统一入口: ```bash # 一键启动所有服务(后端 8385 + 前端 8315 + Nginx 8386) ./start-dev-with-nginx.sh ``` 访问:**http://localhost:8386** ✅ 同域入口 或者手动启动: ```bash # 1. 启动后端(端口 8385) cd backend && ./mvnw spring-boot:run # 2. 启动前端(端口 8315) cd frontend && npm run serve # 3. 启动 Nginx(端口 8386) nginx -c $(pwd)/nginx-dev.conf ``` ### 域名设置 域名: http://auth.chenxin.com 绑定host ```bash 127.0.0.1 auth.chenxin.com ``` ### 服务地址 | 服务 | 地址 | 说明 | |-----|------|------| | **Nginx 统一入口** | http://localhost:8386 | **推荐,同域访问** | | 后端 API | http://localhost:8385 | 直接访问后端 | | 前端 DevServer | http://localhost:8315 | Vue 开发服务器 | | H2 Console | http://localhost:8386/h2-console | 数据库管理 | ### 停止服务 ```bash ./stop-dev.sh ``` ## 测试账号 系统预置了以下测试账号: | 用户名 | 密码 | 昵称 | |---------|------------|--------| | admin | password | 管理员 | | user1 | password | 张三 | | user2 | password | 李四 | ## API 接口 ### 认证相关 | 方法 | 路径 | 描述 | |------|-------------------------------|----------------| | POST | `/api/auth/login` | 账号密码登录 | | POST | `/api/auth/logout` | 登出 | | GET | `/api/auth/qrcode` | 获取登录二维码 | | GET | `/api/auth/qrcode/{id}/status` | 查询二维码状态 | | POST | `/api/auth/qrcode/{id}/scan` | 模拟扫码 | | POST | `/api/auth/qrcode/{id}/confirm`| 确认登录 | ### OAuth2 相关 | 方法 | 路径 | 描述 | |------|--------------------|--------------| | GET | `/oauth2/authorize`| 授权端点 | | POST | `/oauth2/token` | 换取 Token | | GET | `/oauth2/userinfo` | 用户信息 | ### 用户相关 | 方法 | 路径 | 描述 | |------|--------------------|--------------| | GET | `/api/user/profile`| 获取用户信息 | ## License MIT