ASP.NET条件URL角色身份验证
-
19-09-2019 - |
题
除非用户是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方法内的报告和存档角色时,请求报告和归档角色。
不隶属于 StackOverflow