gpt4 book ai didi

c# - 自定义基于角色的授权(无成员(member)资格)

转载 作者:行者123 更新时间:2023-11-30 17:09:07 32 4
gpt4 key购买 nike

我对 MVC 和使用 ASP.NET MVC 4 开发应用程序还很陌生。对于身份验证,我在域中使用 Windows 身份验证和 Active Directory。下一步是授权用户(不使用成员(member)资格)。浏览了几篇文章,仍然找到了一个好的方法。

我有自己的 3 个数据库表(UsersRolesUserRoles)来维护具有多个管理级别的授权用户。它是多对多的。例如,可能有“管理员”(具有创建权限的系统的完全访问权限)、“数据运算符(operator)”(仅为部分更新权限)和“支持用户”(只读/仅查看访问权限)。由于这是多对多 - 用户可能是“支持用户”以及“数据输入运算符(operator)”。

对于特定的部分,我需要基于方法来控制访问。例如,假设有一个名为“InvoiceController”的 Controller 。可能有以下方法。

CreateNewInvoice() // Accessible only by admin

UpdateInvoice(...) // Accessible for admin and data operator

ViewInvoice(...) // Accessible for admin, data operator and support user

(只有角色表中存在的用户才能访问系统,其他人不能访问。)

请告诉我如何根据存储在数据库中的角色在方法级别使用身份验证。

最佳答案

有两种方式:

要么创建自定义 AuthorizeAttribute,您可以在其中加载和检查角色。

但更好的解决方案是创建自定义 IPrincipal/IIdentity 并将其分配到 Application_OnPostAuthenticateRequest 中。通过这样做,您可以充分利用内置的授权模型,而无需进一步的自定义。

在这里查看我的回答:https://stackoverflow.com/a/10949178/70386

关于c# - 自定义基于角色的授权(无成员(member)资格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13227012/

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