首页 > 解决方案 > 在 .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();
    }

标签: c#.net-coreasp.net-apicontroller

解决方案


可以定义自定义属性。 取消和短路


推荐阅读