# auth-service **Repository Path**: microservice-framework-org/auth-service ## Basic Information - **Project Name**: auth-service - **Description**: 认证服务,负责用户认证、授权管理、Token 生成与验证 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-25 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Auth Service 认证服务,基于 Sa-Token 实现用户认证、授权管理、Token 生成与验证。 ## 📦 功能特性 - ✅ **用户认证**:登录/登出、Token 生成与刷新 - ✅ **授权管理**:RBAC 角色管理、权限管理 - ✅ **Token 管理**:Token 验证、续期 - ✅ **Feign 接口**:提供给其他服务调用的 API - ✅ **网关集成**:与 Gateway 服务无缝对接 ## 🏗️ 项目结构 ``` auth-service/ ├── pom.xml # 父 POM ├── auth-api/ # API 模块 │ ├── pom.xml │ └── src/main/java/com/platform/auth/api/ │ ├── AuthFeignClient.java # Feign 客户端接口 │ ├── dto/ # 请求 DTO │ │ ├── LoginDto.java │ │ ├── TokenRefreshDto.java │ │ └── PermissionCheckDto.java │ ├── vo/ # 响应 VO │ │ ├── LoginVo.java │ │ ├── UserInfoVo.java │ │ └── TokenValidateVo.java │ └── enums/ # 枚举 │ └── UserStatusEnum.java └── auth-core/ # 服务实现模块 ├── pom.xml └── src/main/java/com/platform/auth/ ├── AuthApplication.java # 启动类 ├── controller/ # 控制器 │ └── AuthController.java # 认证接口 ├── config/ # 配置 │ └── StpInterfaceImpl.java # 权限接口实现 ├── service/ # 业务逻辑(待完善) ├── mapper/ # 数据访问(待完善) └── entity/ # 数据库实体(待完善) ``` ## 🚀 快速开始 ### 1. 环境要求 - Java 11+ - Redis (用于存储 Token) - MySQL (用于存储用户数据) - Nacos (服务发现) ### 2. 配置文件 修改 `auth-core/src/main/resources/application.yml`: ```yaml server: port: 8081 spring: application: name: auth-service redis: host: localhost port: 6379 datasource: url: jdbc:mysql://localhost:3306/platform_auth username: root password: your_password cloud: nacos: discovery: server-addr: localhost:8848 sa-token: timeout: 2592000 is-concurrent: true is-share: true ``` ### 3. 启动服务 ```bash mvn clean package -DskipTests java -jar auth-core/target/auth-core-1.0.0.jar ``` 或使用 Maven: ```bash mvn spring-boot:run -pl auth-core ``` ## 🔧 核心功能 ### 1. 用户登录 **请求:** ```http POST /api/auth/login Content-Type: application/json { "account": "admin", "password": "123456" } ``` **响应:** ```json { "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "tokenType": "Bearer", "expiresIn": 2592000, "userId": 1001, "username": "admin" } ``` ### 2. Token 验证 **请求:** ```http GET /api/auth/validate?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... ``` **响应:** ```json { "valid": true, "userId": 1001, "username": "admin", "expireTime": 2592000 } ``` ### 3. 用户登出 **请求:** ```http POST /api/auth/logout Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... ``` ## 🔗 与其他服务集成 ### Gateway 服务调用 Gateway 通过 Feign 客户端调用认证服务: ```java @FeignClient(name = "auth-service", contextId = "authClient") public interface AuthFeignClient { @PostMapping("/api/auth/login") LoginVo login(@RequestBody LoginDto loginDto); @GetMapping("/api/auth/validate") TokenValidateVo validateToken(@RequestParam String token); } ``` ### 其他服务调用 在其他服务中注入 Feign 客户端: ```java @Autowired private AuthFeignClient authClient; // 验证 Token TokenValidateVo result = authClient.validateToken(token); if (result.isValid()) { // Token 有效,继续业务处理 } ``` ## 📝 API 接口列表 | 接口 | 方法 | 说明 | 鉴权 | |------|------|------|------| | `/api/auth/login` | POST | 用户登录 | ❌ | | `/api/auth/logout` | POST | 用户登出 | ✅ | | `/api/auth/refresh` | POST | 刷新 Token | ✅ | | `/api/auth/validate` | GET | 验证 Token | ❌ | | `/api/auth/user/{userId}` | GET | 获取用户信息 | ✅ | | `/api/auth/permission/check` | POST | 检查权限 | ✅ | ## ⚠️ 注意事项 1. **Redis 必须**:Sa-Token 需要 Redis 存储 Token 2. **数据库表**:需要创建用户、角色、权限相关表(待补充) 3. **Nacos 配置**:确保 Nacos 服务已启动且可访问 4. **端口配置**:默认端口 8081,避免与其他服务冲突 ## 🔐 安全建议 1. **密码加密**:使用 BCrypt 等强哈希算法 2. **HTTPS**:生产环境必须使用 HTTPS 3. **Token 有效期**:根据业务需求调整过期时间 4. **限流保护**:登录接口添加限流防止暴力破解 ## 📄 License Internal Use Only