C# 如何在WebAPI中限制对DB资源的访问

C# 如何在WebAPI中限制对DB资源的访问,c#,web-services,rest,asp.net-web-api,authorization,C#,Web Services,Rest,Asp.net Web Api,Authorization,我正在做一个WebAPI服务。我刚刚使用了带有身份验证的ASP.NET WebAPI模板。我想知道我们如何限制那些已经登录的用户访问DB实体。通过[授权],我们可以限制未经授权的用户,我已经做到了。登录后,他们现在可以访问任何内容。我有一张餐桌账单。通过BillId,获得授权的用户可以访问Bill表中的任何条目。如何限制这一点?当前账单表与用户标识表没有关系 在考虑了这个场景之后,我有了一个解决方案[不确定最佳方案]。在我所有的控制器中,我都可以获得Userid[已验证的用户id]。当用户向任何

我正在做一个WebAPI服务。我刚刚使用了带有身份验证的ASP.NET WebAPI模板。我想知道我们如何限制那些已经登录的用户访问DB实体。通过[授权],我们可以限制未经授权的用户,我已经做到了。登录后,他们现在可以访问任何内容。我有一张餐桌账单。通过BillId,获得授权的用户可以访问Bill表中的任何条目。如何限制这一点?当前账单表与用户标识表没有关系

在考虑了这个场景之后,我有了一个解决方案[不确定最佳方案]。在我所有的控制器中,我都可以获得Userid[已验证的用户id]。当用户向任何实体添加数据时,我会将userid作为列添加到该实体并存储userid。当任何用户查找资源时,他将只获得属于其用户ID的资源。我没有给任何用户表提供任何关系,只是将userid作为一个新列添加到所有实体中

看来你已经知道该怎么办了。如果你是说,你需要为“权限”或“角色”创建一个机制。每个经过身份验证的用户都应该有一个角色,每当用户想要访问某个内容时,您都应该面对其权限。正如@jpgrassi所说,您可能需要基于角色的访问。用户进入角色后,可以扩展authorize属性,如
[authorize(roles=“where”)]
如果有两个用户具有相同的角色,则两个用户都可以访问属于另一个用户的数据,因为他们具有相同的角色。我们如何限制这一点?那么真正的问题是你现在如何授权访问“账单”。如果主体/用户和实体之间没有关系,则无法配置访问权限。在担心如何限制对实体的访问之前,您必须先了解这种关系是什么。账单表与MedicalRecord表关联,MedicalRecord与Member表关联,Member表与UserIdentity表关联。