LingAdmin/Backend/Services/IdentityService/README.md

106 lines
2.6 KiB
Markdown
Raw Normal View History

2026-04-16 18:13:06 +08:00
# LingAdmin Identity Service
身份认证微服务 - 负责用户注册、登录、Token 管理等功能。
## 服务信息
| 属性 | 值 |
|------|-----|
| 端口 | 5001 |
| Dapr App ID | identity-service |
| Dapr HTTP Port | 3501 |
| 数据库 | LingAdmin_Identity |
## API 端点
### 公开端点 (无需认证)
| 方法 | 路径 | 描述 |
|------|------|------|
| POST | `/api/auth/register` | 用户注册 |
| POST | `/api/auth/login` | 用户登录 |
| POST | `/api/auth/refresh-token` | 刷新 Token |
### 受保护端点 (需要认证)
| 方法 | 路径 | 描述 | 权限要求 |
|------|------|------|----------|
| GET | `/api/auth/profile` | 获取当前用户信息 | 登录用户 |
| POST | `/api/auth/logout` | 用户登出 | 登录用户 |
| POST | `/api/auth/change-password` | 修改密码 | 登录用户 |
| GET | `/api/auth/validate` | 验证 Token | 登录用户 |
### 管理员端点
| 方法 | 路径 | 描述 | 权限要求 |
|------|------|------|----------|
| GET | `/api/users` | 获取用户列表 | Admin/SuperAdmin |
| GET | `/api/users/{id}` | 获取用户详情 | Admin/SuperAdmin |
| PATCH | `/api/users/{id}/status` | 更新用户状态 | Admin/SuperAdmin |
| POST | `/api/users/{id}/reset-password` | 重置用户密码 | Admin/SuperAdmin |
| DELETE | `/api/users/{id}` | 删除用户 | SuperAdmin |
## 启动方式
### 独立启动
```powershell
cd LingAdmin.IdentityService
dotnet run
```
### 使用 Dapr 启动
```powershell
dapr run --app-id identity-service --app-port 5001 --dapr-http-port 3501 --resources-path ../dapr/components -- dotnet run
```
## 数据库迁移
```powershell
# 添加迁移
dotnet ef migrations add <MigrationName>
# 更新数据库
dotnet ef database update
```
## 默认账户
| 邮箱 | 密码 | 角色 |
|------|------|------|
| admin@lingadmin.com | Admin@123456 | SuperAdmin |
## 发布的事件
| 事件名称 | 描述 | 数据 |
|----------|------|------|
| user-created | 用户创建时发布 | UserId, Email, Name, Timestamp |
| user-logged-in | 用户登录时发布 | UserId, Email, IpAddress, Timestamp |
| user-password-changed | 密码修改时发布 | UserId, Timestamp |
## 配置说明
### appsettings.json
```json
{
"ConnectionStrings": {
"DefaultConnection": "数据库连接字符串"
},
"JwtSettings": {
"SecretKey": "JWT 密钥 (至少32字符)",
"Issuer": "Token 发行者",
"Audience": "Token 接收者",
"AccessTokenExpiryMinutes": 60,
"RefreshTokenExpiryDays": 7
}
}
```
## 密码策略
- 最少 8 个字符
- 至少一个大写字母
- 至少一个小写字母
- 至少一个数字
- 至少一个特殊字符