gpt4 book ai didi

c# - Asp.net Core Web API在 Controller 级别之外基于资源的授权

转载 作者:行者123 更新时间:2023-12-03 16:05:23 24 4
gpt4 key购买 nike

除其他应用程序外,我不希望用户A访问用户B的资源,而且我将使用具有不同角色的用户来创建Web API。如下所示:

Orders/1 (User A)

Orders/2 (User B)


当然,我可以从请求中获取JWT并查询数据库,以检查该用户是否拥有该订单,但这会使我的 Controller Actions过于繁重。
这个 example使用AuthorizeAttribute,但是它看起来太宽泛了,我将不得不为API中的所有路由添加大量条件,以检查正在访问的路由,然后查询数据库进行几次联接,这些联接会导致返回到users表以返回该请求是否有效。

Update

For Routes the first line of defense is a security policy whichrequire certain claims.

My question is about the second line of defense that is responsible tomake sure users only access their data/resources.


在这种情况下,有什么标准方法可以采用?

最佳答案

使用[Authorize]属性称为声明性授权。但是它是在执行 Controller 或 Action 之前执行的。当您需要基于资源的授权并且文档具有作者属性时,必须在授权评估之前从存储中加载文档。这称为命令授权。

Microsoft Docs上有一个post,它如何处理ASP.NET Core中的命令式授权。我认为它非常全面,可以回答您有关标准方法的问题。

同样在here中,您可以找到代码示例。

关于c# - Asp.net Core Web API在 Controller 级别之外基于资源的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61259702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com