【问题标题】:Attribute to Check Auth Logic in .NET Core API在 .NET Core API 中检查身份验证逻辑的属性
【发布时间】:2020-09-02 13:36:17
【问题描述】:

堆栈是最新的带有 C# 的 .NET Core。

我们将相同的代码粘贴到几乎每个控制器中:

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();
    }

【问题讨论】:

  • 我假设授权用户只能编辑自己的个人资料,那么我认为 'User.IsAuthenticated())' 应该足以进行此检查。

标签: c# .net-core asp.net-apicontroller


【解决方案1】:

可以定义自定义属性。 Cancellation and short-circuiting

【讨论】:

    猜你喜欢
    • 2020-10-15
    • 2017-04-27
    • 2018-05-13
    • 1970-01-01
    • 2018-12-17
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    相关资源
    最近更新 更多