【问题标题】:Allow user only access his/her own resource with id in Authorize[] middleare .Net Core Api允许用户仅在 Authorize[] 中间件 .Net Core Api 中使用 id 访问他/她自己的资源
【发布时间】:2021-09-07 09:46:01
【问题描述】:

我在 .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);
    }

【问题讨论】:

  • 嗨@Emre,您是否考虑过使用基于策略的身份验证,例如this?

标签: asp.net jwt asp.net-core-webapi asp.net-core-3.1 authorize-attribute


【解决方案1】:

看看我们在 Curity 创建的本教程:Securing a .NET Core API。您将在那里看到如何根据 JWT 访问令牌中的声明配置授权。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-03
    • 2021-09-28
    • 1970-01-01
    • 2019-04-05
    • 2018-04-03
    • 2017-10-29
    • 2019-01-13
    • 1970-01-01
    相关资源
    最近更新 更多