# 扫码登陆软件 **Repository Path**: bingbingyihao/scan-code-login-software ## Basic Information - **Project Name**: 扫码登陆软件 - **Description**: 采用Java实现的安卓应用扫码登陆Web端 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-02 - **Last Updated**: 2026-05-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 扫码登陆软件 ## 项目介绍 采用Java实现的安卓应用扫码登陆Web端系统。用户通过安卓手机端的uniApp应用扫描Web端生成的二维码,实现快捷登录功能。 ## 技术栈 ### 后端 (Web) - **Spring Boot 2.3.4** - 后端框架 - **Spring Data Redis** - 缓存与状态管理 - **ZXing 3.5.1** - 二维码生成与解析 - **JJWT 0.9.1** - JWT令牌生成与验证 - **Hutool 5.8.15** - Java工具类库 - **Lombok** - 简化Java代码 ### 移动端 (scan-login) - **uni-app** - 跨平台移动应用框架 - **Vue.js** - 前端框架 ### 前端页面 - 原生HTML/CSS/JavaScript - Web端登录与首页 ## 项目结构 ``` scan-code-login-software/ ├── code/ │ ├── Web/ # Spring Boot后端项目 │ │ ├── src/main/java/com/boot/ │ │ │ ├── MainApplication.java # 启动类 │ │ │ ├── common/ │ │ │ │ └── Result.java # 统一响应封装 │ │ │ ├── config/ │ │ │ │ └── WebConfig.java # Web配置 │ │ │ ├── constant/ │ │ │ │ └── RedisConstants.java # Redis常量定义 │ │ │ ├── controller/ │ │ │ │ ├── QrCodeController.java # 二维码相关接口 │ │ │ │ └── UserController.java # 用户相关接口 │ │ │ ├── entity/ │ │ │ │ ├── QrCodeStatus.java # 二维码状态枚举 │ │ │ │ └── User.java # 用户实体 │ │ │ └── service/ │ │ │ ├── QrCodeService.java # 二维码业务逻辑 │ │ │ └── UserService.java # 用户业务逻辑 │ │ └── src/main/resources/ │ │ ├── application.properties # 应用配置 │ │ └── static/ │ │ ├── index.html # 首页(登录后) │ │ └── login.html # 登录页(含二维码) │ └── scan-login/ # uni-app移动端项目 │ ├── pages/ │ │ ├── login/login.vue # 登录页 │ │ ├── scan/scan.vue # 扫码页 │ │ ├── home/home.vue # 首页 │ │ └── index/index.vue # 入口页 │ ├── utils/ │ │ └── http.js # HTTP请求封装 │ ├── App.vue # 应用入口 │ ├── main.js # 主入口 │ ├── pages.json # 页面配置 │ └── manifest.json # 应用配置 └── README.md ``` ## 核心功能 ### 1. 二维码生成 - 使用ZXing库生成二维码图片 - 每个二维码包含唯一的ticket标识 - 二维码状态存储在Redis中,支持过期管理 ### 2. 扫码登录流程 1. Web端生成二维码并展示 2. 用户打开手机端uniApp应用并登录 3. 使用扫码功能扫描Web端二维码 4. 手机端提交扫码信息到后端 5. 后端确认登录并返回JWT令牌 6. Web端轮询二维码状态,获取令牌完成登录 ### 3. 二维码状态管理 - **WAIT_SCAN** - 等待扫码 - **SCANNED** - 已扫码,等待确认 - **CONFIRMED** - 已确认登录 - **EXPIRED** - 已过期 ### 4. 用户认证 - 基于JWT的Token认证机制 - 支持传统用户名密码登录 - 支持扫码快捷登录 - Token存储在Redis中,支持失效管理 ## API接口 ### 二维码相关接口 | 接口 | 方法 | 路径 | 描述 | |------|------|------|------| | 生成二维码 | GET | `/api/qrcode/generate` | 生成新的二维码 | | 查询状态 | GET | `/api/qrcode/status/{ticket}` | 查询二维码当前状态 | | 扫码提交 | POST | `/api/qrcode/scan` | 手机端提交扫码信息 | | 确认登录 | POST | `/api/qrcode/confirm` | 确认登录并获取Token | ### 用户相关接口 | 接口 | 方法 | 路径 | 描述 | |------|------|------|------| | 用户登录 | POST | `/api/user/login` | 用户名密码登录 | | 获取用户信息 | GET | `/api/user/info` | 获取当前登录用户信息 | | 退出登录 | POST | `/api/user/logout` | 退出当前登录 | ## 环境要求 - **JDK** >= 8 - **Maven** >= 3.6 - **Redis** >= 5.0 - **HBuilderX** (用于uni-app开发) 或 Node.js环境 ## 快速开始 ### 1. 启动Redis服务 ```bash # Windows redis-server.exe # Linux/Mac redis-server ``` ### 2. 配置后端 编辑 `code/Web/src/main/resources/application.properties`: ```properties server.port=8080 spring.redis.host=localhost spring.redis.port=6379 spring.redis.password= spring.redis.database=0 spring.redis.timeout=5s ``` ### 3. 启动后端服务 ```bash cd code/Web mvn spring-boot:run ``` 或使用IDE直接运行 `MainApplication.java` ### 4. 访问Web端 浏览器打开: `http://localhost:8080/login.html` ### 5. 运行移动端 1. 使用HBuilderX打开 `code/scan-login` 目录 2. 修改 `utils/http.js` 中的 `BASE_URL` 为后端实际地址 3. 运行到手机或模拟器 ## 使用说明 ### Web端操作 1. 打开登录页面 `http://localhost:8080/login.html` 2. 页面自动显示二维码 3. 使用手机端扫描二维码 4. 扫码成功后自动跳转至首页 ### 移动端操作 1. 打开应用并登录账号 2. 进入扫码页面 3. 点击"点击扫码"按钮 4. 对准Web端二维码进行扫描 5. 扫描成功后自动确认登录 ## 注意事项 1. 确保Redis服务正常运行 2. 手机端需要与Web端在同一网络环境,或手机可访问后端服务地址 3. 二维码默认有过期时间,过期后需要刷新 4. 首次使用需要配置移动端 `http.js` 中的服务器地址 ## 扩展建议 - 添加数据库持久化支持(MySQL/PostgreSQL) - 实现用户注册功能 - 添加扫码登录历史记录 - 支持多端同时登录管理 - 添加二维码刷新机制 - 实现WebSocket推送替代轮询 ## License Apache License