我希望限制对特定url的访问,除非用户是两个不同角色的成员。在这种情况下,我只希望在用户同时处于Reporting 和存档角色的情况下授予对此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>
发布于 2009-07-23 17:38:09
这有点难看,但您可以从当前使用的角色提供程序(SqlRoleProvider、WindowsTokenRoleProvider、AuthorizationStoreRoleProvider)继承、重写GetRolesForUser、调用基本实现来获取角色,并根据需要将它们组合在一起。然后将自定义角色提供程序明显地放在配置部分的web.config中。
您只需要覆盖一个方法(也可能是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();
}发布于 2009-07-23 15:42:22
您可以创建一个SQL函数,该函数给定特定的用户ID、页面URL和允许的角色列表(XML),返回一个比特,指示是否授予该URL访问权,然后使用该函数设置一个标志,该标志将确定是否在javascript或DHTML菜单中将其显示为有效的选择。
发布于 2009-07-23 16:04:13
你可以实现自定义角色提供程序。然后,您可以定义新的“假”角色ReportingAndArchiving,并在请求IsUserInRole角色时检查用户是否属于IsUserInRole方法中的报告和存档角色。
https://stackoverflow.com/questions/1172598
复制相似问题