0

我有自定义 SiteMapProvider 和 RoleProvider 可以正常工作:如果请求的页面中未提及当前用户的角色,则IsAccessibleToUser返回。falseSiteMapNode.Roles

所以面包屑或菜单不显示项目。

但是现在用户仍然可以直接键入显示的 URL 并打开一个页面。我怎样才能阻止这种行为?

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

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

1 回答 1

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();
    }
}
于 2010-05-25T09:55:05.777 回答