是否可以使用securityTrimmingEnabled = true阻止打开页面

时间:2010-05-24 18:00:26

标签: asp.net roleprovider breadcrumbs sitemapprovider securitytrimmingenabled

我有自定义的SiteMapProvider和RoleProvider可以正常协同工作:IsAccessibleToUser如果false中没有提到当前用户的角色请求页面,则返回SiteMapNode.Roles

因此面包屑或菜单不显示项目。

但是用户仍然可以直接输入显示URL并打开页面。我怎么能阻止这种行为?

我还有下一个Web.config设置:

<authorization>
    <allow roles="Admin,Manager,Client"  />
    <deny users="*" />
</authorization>

1 个答案:

答案 0 :(得分:0)

public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
    var roles = node.Roles.OfType<string>();
    if (roles.Contains("*") || (roles.Count(r => context.User.IsInRole(r)) > 0))
    {
        return true;
    }
    else
    {
        throw new InsufficientRightsException();
    }
}