【问题标题】:Is it possible to block a page from opening using securityTrimmingEnabled=true是否可以使用 securityTrimmingEnabled=true 阻止页面打开
【发布时间】:2010-05-24 18:00:25
【问题描述】:

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

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

但是现在用户仍然可以直接键入显示的 URL 并打开一个页面。如何阻止此类行为?

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

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

【问题讨论】:

    标签: asp.net roleprovider breadcrumbs sitemapprovider securitytrimmingenabled


    【解决方案1】:
    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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-27
      • 1970-01-01
      • 2021-03-27
      • 2021-05-07
      • 1970-01-01
      • 2010-10-13
      • 2020-06-07
      相关资源
      最近更新 更多