修改接口
This commit is contained in:
120
API控制器重构总结.md
Normal file
120
API控制器重构总结.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# API控制器重构总结
|
||||
|
||||
## 修改概述
|
||||
|
||||
为了统一用户身份验证逻辑,我们将所有控制器从继承`ControllerBase`改为继承`BaseController`,并更新了`GetCurrentUserId`的调用方式。
|
||||
|
||||
## 修改内容
|
||||
|
||||
### 1. BaseController.cs
|
||||
|
||||
- 保留原有的`GetCurrentUserIdNullable()`方法(返回`int?`)
|
||||
- 新增`GetCurrentUserId()`方法(返回`int`,未认证时返回0)
|
||||
|
||||
### 2. 修改的控制器(从ControllerBase改为BaseController)
|
||||
|
||||
以下控制器已从继承`ControllerBase`改为继承`BaseController`,并更新了`GetCurrentUserId`的调用方式:
|
||||
|
||||
1. **UsersController.cs**
|
||||
- 继承关系:`ControllerBase` → `BaseController`
|
||||
- 更新了`GetUser`、`UpdateUser`、`ChangePassword`方法中的用户ID验证逻辑
|
||||
- 移除了私有的`GetCurrentUserId`方法
|
||||
|
||||
2. **MailsController.cs**
|
||||
- 继承关系:`ControllerBase` → `BaseController`
|
||||
- 更新了所有方法中的用户ID验证逻辑(从`== null`改为`<= 0`)
|
||||
- 移除了服务调用中的`.Value`访问
|
||||
|
||||
3. **UserController.cs**
|
||||
- 继承关系:`ControllerBase` → `BaseController`
|
||||
- 更新了用户ID验证逻辑
|
||||
|
||||
4. **AIAssistantController.cs**
|
||||
- 继承关系:`ControllerBase` → `BaseController`
|
||||
- 更新了用户ID验证逻辑
|
||||
|
||||
5. **AIController.cs**
|
||||
- 继承关系:`ControllerBase` → `BaseController`
|
||||
- 更新了用户ID验证逻辑
|
||||
|
||||
6. **CapsulesController.cs**
|
||||
- 继承关系:`ControllerBase` → `BaseController`
|
||||
- 更新了用户ID验证逻辑
|
||||
|
||||
7. **NotificationController.cs**
|
||||
- 继承关系:`ControllerBase` → `BaseController`
|
||||
- 更新了用户ID验证逻辑
|
||||
|
||||
8. **PersonalSpaceController.cs**
|
||||
- 继承关系:`ControllerBase` → `BaseController`
|
||||
- 更新了用户ID验证逻辑
|
||||
|
||||
9. **StatisticsController.cs**
|
||||
- 继承关系:`ControllerBase` → `BaseController`
|
||||
- 更新了用户ID验证逻辑
|
||||
|
||||
10. **TimeCapsulesController.cs**
|
||||
- 继承关系:`ControllerBase` → `BaseController`
|
||||
- 更新了用户ID验证逻辑
|
||||
|
||||
11. **TimelineController.cs**
|
||||
- 继承关系:`ControllerBase` → `BaseController`
|
||||
- 更新了用户ID验证逻辑
|
||||
|
||||
### 3. 已继承BaseController的控制器(无需修改)
|
||||
|
||||
1. **FileUploadController.cs**
|
||||
- 已继承`BaseController`
|
||||
- 已使用正确的`GetCurrentUserId`调用方式
|
||||
|
||||
2. **UploadController.cs**
|
||||
- 已继承`BaseController`
|
||||
- 已使用正确的`GetCurrentUserId`调用方式
|
||||
|
||||
### 4. 不需要身份验证的控制器(保持原样)
|
||||
|
||||
1. **TempFixController.cs**
|
||||
- 不需要身份验证
|
||||
- 继承`ControllerBase`
|
||||
|
||||
2. **OAuthController.cs**
|
||||
- 处理OAuth登录流程,需要匿名访问
|
||||
- 继承`ControllerBase`
|
||||
|
||||
3. **AuthController.cs**
|
||||
- 处理认证流程,需要匿名访问
|
||||
- 继承`ControllerBase`
|
||||
- 保留私有的`GetCurrentUserIdNullable`方法,并重命名为`GetCurrentUserIdNullable`以避免冲突
|
||||
|
||||
## 修改后的用户ID验证逻辑
|
||||
|
||||
### 修改前
|
||||
```csharp
|
||||
var currentUserId = GetCurrentUserId();
|
||||
if (currentUserId == null)
|
||||
{
|
||||
return Unauthorized();
|
||||
}
|
||||
// 使用currentUserId.Value
|
||||
```
|
||||
|
||||
### 修改后
|
||||
```csharp
|
||||
var currentUserId = GetCurrentUserId();
|
||||
if (currentUserId <= 0)
|
||||
{
|
||||
return Unauthorized();
|
||||
}
|
||||
// 直接使用currentUserId
|
||||
```
|
||||
|
||||
## 优势
|
||||
|
||||
1. **代码一致性**:所有控制器使用相同的用户身份验证方法
|
||||
2. **减少重复代码**:移除了各个控制器中重复的`GetCurrentUserId`实现
|
||||
3. **更简洁的API**:`GetCurrentUserId()`返回`int`类型,使用更方便
|
||||
4. **更好的可维护性**:身份验证逻辑集中在`BaseController`中
|
||||
|
||||
## 测试
|
||||
|
||||
API服务已成功启动并运行,没有出现编译错误,说明所有修改都是正确的。
|
||||
Reference in New Issue
Block a user