c# - 在 .NET Core API 中检查身份验证逻辑的属性
问题描述
该堆栈是最新的带有 C# 的 .NET Core。
profileId
我们将相同的代码粘贴到几乎每个控制器中,检查是否有人试图编辑他们自己的配置文件(我们从 JWT 获得):
if (User.GetProfileId() != profileId)
return Unauthorized();
我有点茫然如何消除这种冗余。我绝对可以添加通用中间件或过滤器来执行此操作,但它似乎很笨拙。是否有一些方法可以添加[MustOwnProfile]
属性并让 .NET Core 在属性出现的任何位置运行上述代码中的测试?
上述检查在上下文中的示例:
[HttpPost]
[Route("{profileId:int}/start-profile/{checklistId:int}")]
[Authorize]
public async Task<IActionResult> StartProfile(int profileId, int checklistId)
{
if (User.GetProfileId() != profileId)
return Unauthorized();
await _profileService.StartProfile(profileId, checklistId);
return Ok();
}
解决方案
可以定义自定义属性。 取消和短路
推荐阅读
- python - 多语言 Bert 句子向量捕捉到的语言不仅仅是意义——作为实习生工作?
- javascript - 即使性能不佳,我是否应该在 JS 库中使用 Array.map?
- go - Go 上的 API 速率限制
- python - 将二维数组的字符串表示形式从 CSV 列读取到二维 numpy 数组中
- python - mypy:为什么“int”是“float”的子类型?
- ios - 在视图控制器之间推送转换时保持视图
- javascript - 除非发生某些事件,否则如何使所有用户都无法访问 React 中的路由
- javascript - 如何在 WebGL 中创建矢量画笔工具?(如 Clip Studio 或 Concepts)
- angularjs - Angularjs上传多个文件
- snowflake-cloud-data-platform - 来自 s3 的雪花副本,带有 jdbc 但没有加载状态