2

目前,我有一个需要授权ControllerIndex()操作方法:

public partial class CustomerController : BaseDocumentStoreController
{
    [Authorize(Roles = AccountController.Administrator)]
    public virtual ViewResult Index()
    {
        ...
    }

    ...
}

有了这个,相应的节点Mvc.sitemap将不会显示在面包屑中:

<mvcSiteMapNode     title="Customer"         controller="Customer" action="Index"
                    resourceKey="Customers"  clickable="true" >

    <mvcSiteMapNode title="Customer Add"     controller="Customer" action="Add"
                    resourceKey="Add"  />
    <mvcSiteMapNode title="Customer Create"  controller="Customer" action="Create"
                    resourceKey="Add" />
    <mvcSiteMapNode title="Customer Edit"    controller="Customer" action="Edit"
                    resourceKey="Edit" />
    <mvcSiteMapNode title="Customer Update"  controller="Customer" action="Update"
                    resourceKey="Edit" />
    <mvcSiteMapNode title="Customer Delete"  controller="Customer" action="Delete"
                    resourceKey="Delete" />
    <mvcSiteMapNode title="Customer Details" controller="Customer" action="Details"
                    resourceKey="Details" />
    <mvcSiteMapNode title="Customer Search"  controller="Customer" action="Search"
                    resourceKey="Search" />

</mvcSiteMapNode>

我想要的是无论如何都显示这个节点......

假设用户未通过身份验证。所以我希望面包屑显示这一点:

Home > Customers > Add

目前它只显示:

Add

如果用户单击“客户”节点,他将被重定向到登录视图……好的,没关系!

SiteMapVisibilityProvider我尝试按照以下步骤实现自己的:

public class SiteMapVisibilityProvider : ISiteMapNodeVisibilityProvider
{
   ...
}

在调试时,我只能看到 Index 节点下方的节点,也就是说,在我目前的情况下,只有 Add 节点出现。表示 Index 操作方法的节点未显示在调试会话中。

有什么方法可以实现我想要的吗?

4

1 回答 1

3

问题很可能在于DefaultAclModule,它隐藏了当前用户无法访问的所有节点。如果您不想要该功能,可以通过securitytrimming在 web.config 的站点地图提供程序中设置为 false 来禁用它。

您还可以通过实现自定义来更改功能AclModule

于 2012-04-22T22:24:09.760 回答