.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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...