106 lines
2.6 KiB
Markdown
106 lines
2.6 KiB
Markdown
# 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 个字符
|
|
- 至少一个大写字母
|
|
- 至少一个小写字母
|
|
- 至少一个数字
|
|
- 至少一个特殊字符
|