除非用户是2个不同角色的成员,否则我想限制对特定URL的访问。在这种情况下 归档角色。有没有办法在ASP.NET中执行此操作?

<location path="testpage.aspx">
<system.web>
  <authorization>
    <allow roles="Reporting, Archiving"/>
    <deny users="*"/>
  </authorization>
</system.web>

我想要这样的东西:

<location path="testpage.aspx">
<system.web>
  <authorization>
    <allow roles="Reporting & Archiving"/>
    <deny users="*"/>
  </authorization>
</system.web>

有帮助吗?

解决方案

这很丑陋,但是您可以从您当前使用的角色提供商(Sqlroleprovider,WindowsStokenRoleprovider,oferitizationStoreroLeprovider),Override GetRolesForuser,致电基本实现以获取角色,并根据需要将其组合起来。然后显然将您的自定义角色提供商放在您的Web.config中u003CroleManager>配置部分。

您只需要覆盖一种方法(也许是getusersinrole),并根据需要组合它们。

public override string[] GetRolesForUser( string username ) {
    List<string> roles = new List<string>( base.GetRolesForUser(username) );
    if( roles.Contains("Reporting") && roles.Contains("Archiving") ) {
        roles.Add("ReportingAndArchiving");
    }
    return roles.ToArray();
}

其他提示

您可以创建一个SQL函数,该函数给定特定的用户ID,页面URL和允许角色的列表(XML),返回一些指示是否授予该URL的访问,然后使用该访问来设置该标志,以确定是否确定是否确定是否确定是否确定显示在JavaScript或DHTML菜单或其他任何内容中作为有效的选择。

你可以 实施自定义角色提供商. 。然后,您可以定义新的“假”角色报告和结构,并在请求报告和归档在Isuserinrole方法内的报告和存档角色时,请求报告和归档角色。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top