如何解决.NET Core API中检查身份验证逻辑的属性
堆栈是带有C#的最新.NET Core。
我们正在粘贴相同的代码,以检查是否有人试图将自己的个人资料(我们从JWT获得profileId
)编辑到几乎每个控制器中:
if (User.GetProfileId() != profileId)
return Unauthorized();
我有点茫然如何删除此冗余。我绝对可以添加通用中间件或filter来执行此操作,但是似乎繁重。是否有某种方法可以添加[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();
}
解决方法
可以定义自定义属性。 Cancellation and short-circuiting
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。