C# 属性检查.NET核心API中的身份验证逻辑

C# 属性检查.NET核心API中的身份验证逻辑,c#,.net-core,asp.net-apicontroller,C#,.net Core,Asp.net Apicontroller,该堆栈是最新的.NET内核w/C# 我们正在将相同的代码粘贴到几乎每个控制器中,检查是否有人试图编辑他们自己的配置文件(我们从JWT获得了他们的profileId): if (User.GetProfileId() != profileId) return Unauthorized(); 我有点不知道如何消除这种冗余。我当然可以添加通用中间件或应用程序来执行此操作,但它似乎很繁重。是否有某种方法可以添加[MustOwnProfile]属性,并让.NET Core在上述代码中出现该属性的任何

该堆栈是最新的.NET内核w/C#

我们正在将相同的代码粘贴到几乎每个控制器中,检查是否有人试图编辑他们自己的配置文件(我们从JWT获得了他们的
profileId
):

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();
    }
[HttpPost]
[路由(“{profileId:int}/start profile/{checklistId:int}”)]
[授权]
公共异步任务StartProfile(int profileId、int checklistId)
{
if(User.GetProfileId()!=profileId)
未经授权返回();
wait_profileService.StartProfile(profileId,checklistId);
返回Ok();
}

可以定义自定义属性。

我假设授权用户只能编辑自己的配置文件,那么我认为“user.IsAuthenticated())”应该足以进行此检查。