c# - 在ASP.NET中,使用什么来管理角色和分配给角色的权限?

标签 c# asp.net authorization permissions role

我正在开发 ASP.NET Web 应用程序。我有一个众所周知的问题:每个用户可以属于一个或多个角色(管理员、公共(public)用户),每个角色可以拥有一个或多个权限(可以编辑、可以删除、可以上传等),反之亦然。我想做这样的事情:[http://demo.sitefinity.com/Sitefinity/Admin/Modules.aspx?route=GenericControlPanel.PermissionsView `1]。

我找到了这些选项来实现这一点:

  • 使用 NetSqlAzMan (但我不确定它是否适用于我们的应用程序,因为我们的用户没有存储在与应用程序相同的数据库中,并且我们正在使用表单例份验证)
  • 实现我自己的类,使我能够执行以下操作:User.HasPermission/AddPermissionToUser/等。
  • 使用 2 个角色提供程序:一个用于管理角色,一个用于管理权限,因为角色和权限之间存在 m:n 关系,因此知道这些提供程序将被“链接”。
  • 我现在正在使用自定义角色提供程序,因此另一个选择是添加管理此提供程序权限的方法。

我还想缓存给定用户的角色和权限。我认为我自己做这件事需要一些时间,所以你对我有什么建议?

提前谢谢

最佳答案

如果您找到了一个很好的权限模块打包解决方案,我希望看到它:)

一般来说,内置安全提供程序在“身份验证”和“授权”部分之后停止。一旦识别并授权访问应用程序,更具体的页面或功能级别权限将由您自行编码和管理。

您描述的权限级别实际上是一个相当高级的实现级别。它镜像 Windows 中的访问控制列表 (ACL)。虽然看起来相当简单,但实际上编码起来相当困难。一旦开始设计,您就会发现必须实现“拒绝”覆盖权限,必须处理多级组权限合并,然后必须处理“特殊”权限等。然后你会遇到诸如“编辑权限是否也意味着查看,如果他们没有查看但有添加我该怎么办”?

这可能真的是一团糟。

在您以这种复杂程度实现权限之前,我强烈建议您退后一步,看看是否可以稍微简化您的权限和角色/组模型。难道你不能让你的角色成为权限吗?例如,可以编辑的人员的角色、可以添加的人员的角色、可以查看的人员的角色...等等。

在大多数应用程序中,您实际上并不需要权限系统中的完整 ACL(如粒度)。

一旦定义了应用程序真正需要的适当权限级别,通常最好滚动一组自定义对象来管理这些权限。我不得不说,我以前从未考虑过使用第二个链接角色提供程序作为权限管理器......这实际上是一个很棒的主意。但我仍然建议不要这样做。角色提供程序并不是为您想要执行的操作而设计的,您可能必须大量扩展和覆盖默认行为,以至于从头开始使用自定义实现会更简单且更易于维护。

关于c# - 在ASP.NET中,使用什么来管理角色和分配给角色的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1518950/

相关文章:

c# - 最小起订量和您传递的参数

c# - SQLite多进程访问

asp.net - selectedindexchanged 和 textchanged 的​​区别

asp.net - Internet Explorer 9 中奇怪的 Ajax/Jquery 行为

asp.net-mvc - 防止授权用户编辑不属于他的数据

c# - .NET 中 NSOperationQueue 的等价物

c# - 我如何请求提升注册管理机构对 HKLM 的访问权限?

javascript - 在 Javascript 中访问 JavaScriptSerializer

微服务架构中资源级别的授权

c# - 操作链接(如果已授权)