在 ASP.Net 中使用自定义 RoleProvider 时如何允许多个角色查看页面

Posted

技术标签:

【中文标题】在 ASP.Net 中使用自定义 RoleProvider 时如何允许多个角色查看页面【英文标题】:How do I allow multiple roles to see a page when using a custom RoleProvider in ASP.Net 【发布时间】:2010-10-10 08:36:30 【问题描述】:

我创建了自己的角色提供程序,因为我发现 ASP.Net 提供的角色提供程序在数据库中的表方面过于庞大。我发现实现自定义 RoleProvider 非常简单。

我唯一的问题是现在我不能为一个页面设置多个角色。我在某处看到,在您的班级顶部,您需要使用一些安全代码“注释”它。这就是我所拥有的

[PrincipalPermission(SecurityAction.Demand, Role="Admin")]

如果我尝试使用逗号分隔的列表来包含多个角色,则会出现错误。如果我尝试指定多个角色键,那么我也会收到错误。我是否需要指定多个 PrinicipalPermissions?

我对 ASP.Net 的角色管理经验很少。有人能指出我正确的方向或一些好的文学作品吗?

【问题讨论】:

【参考方案1】:

您可以多次添加 PrinicpalPermission 属性。

[PrincipalPermission(SecurityAction.Demand, Role="Admin")]
[PrincipalPermission(SecurityAction.Demand, Role="AnotherRole")]

【讨论】:

对于任何想知道的人,这适用于多个“OR”角色,而不是“AND”。 那你能参考一下如何做'AND'吗?我发现 'intersect' 和 'union' 方法读起来很混乱。【参考方案2】:
[PrincipalPermission(SecurityAction.Demand, Role="Admin,Another RoleName")]

【讨论】:

以上是关于在 ASP.Net 中使用自定义 RoleProvider 时如何允许多个角色查看页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net core 2.1 中使用自定义消息设置状态代码?

为啥在asp.net中使用自定义404页面时不存在的页面返回302状态

在asp.net的自定义类(C#)中怎样把变量输出到页面?

在 asp.net mvc 5 中使用身份自定义用户和角色

在 Kendo Scheduler 自定义模板中绑定 DropDownList(ASP.NET MVC Wrapper 版本)

使用 IClientModelValidator 在 ASP.NET Core 中使用参数自定义客户端验证属性