Asp.net mvc 使用MVCSiteMapProvider进行安全修整

Asp.net mvc 使用MVCSiteMapProvider进行安全修整,asp.net-mvc,mvcsitemapprovider,Asp.net Mvc,Mvcsitemapprovider,在MVCSiteMapProvider中使用安全微调时,是否有一种方法可以在用户通过身份验证时隐藏节点,但在未通过身份验证时显示节点(与通常使用的方法相反) 假设我有一个显示注册、登录和支持的菜单。经过身份验证后,我希望它隐藏Register并登录,替换为My Account,然后继续显示支持。所以,为了坚持使用MVCSiteMapProvider的安全微调功能,我想在验证时隐藏一个节点 非常感谢 最简单的方法是在对用户进行身份验证时使用自定义可见性提供程序隐藏节点。MVC音乐商店的演示已经展示

在MVCSiteMapProvider中使用安全微调时,是否有一种方法可以在用户通过身份验证时隐藏节点,但在未通过身份验证时显示节点(与通常使用的方法相反)

假设我有一个显示注册、登录和支持的菜单。经过身份验证后,我希望它隐藏Register并登录,替换为My Account,然后继续显示支持。所以,为了坚持使用MVCSiteMapProvider的安全微调功能,我想在验证时隐藏一个节点


非常感谢

最简单的方法是在对用户进行身份验证时使用自定义可见性提供程序隐藏节点。MVC音乐商店的演示已经展示了这一点

//
///仅在用户未经身份验证时显示节点。
/// 
公共类非身份验证可访问性提供程序
:SiteMapNodeVisibilityProviderBase
{
#区域IsItemaNodeVisibilityProvider成员
/// 
///确定节点是否可见。
/// 
///节点。
///源元数据。
/// 
///如果指定的节点可见,则为true;否则为false。
/// 
public override bool IsVisible(IsItemaNode节点,IDictionary sourceMetadata)
{
return!HttpContext.Current.Request.IsAuthenticated;
}
#端区
}
可以通过在要使用它的节点的visibilityProvider属性/属性中指定程序集类型来调用它

<mvcSiteMapNode title="$resources:SiteMapLocalizations,LogOnTitle" action="LogOn" visibilityProvider="MvcMusicStore.Code.NonAuthenticatedVisibilityProvider, Mvc Music Store" />

<mvcSiteMapNode title="$resources:SiteMapLocalizations,LogOnTitle" action="LogOn" visibilityProvider="MvcMusicStore.Code.NonAuthenticatedVisibilityProvider, Mvc Music Store" />