允许用户仅通过 Authorize[] middleare .Net Core Api 中的 id 访问他/她自己的资源

Emr*_*mre 5 asp.net authorize-attribute jwt asp.net-core-webapi asp.net-core-3.1

我在 .Net Core 3.1 Api 中使用基于角色的身份验证。我正在使用 Jwt 令牌和用户声明。基于角色的身份验证工作正常。但在某些控制器中,我想确保用户获得他/她自己的数据。因为如果一名员工在请求中发送其他员工 ID,他/她可以获得该资源数据,我不希望这样。

我有电子邮件、ID 和令牌中的角色以及其他一些数据。

我想要的是类似 [Authorize(Roles="Employee", Id={userId})]

[HttpGet("getUserInventory")]
    //[Authorize(Roles="Employee", Claims.Id={userId})]
    public IActionResult getUserInventory([FromQuery] int userId)
    {
        var inventories = _userInventoryExportService.GetGlobalInventory(userId);
        if(inventories.Success)
        {
            return Ok(inventories.Data);
        }
        return BadRequest(inventories.Message);
    }
Run Code Online (Sandbox Code Playgroud)

Mic*_*ski 0

查看我们在 Curity:保护 .NET Core API中创建的教程。您将看到如何根据 JWT 访问令牌中找到的声明配置授权。