2012-06-12 25 views
1

在web表單如果路徑不accesable針對特定用戶,它會被隱藏,可以這樣用MvcSiteMap做了什麼?的MvcSiteMap工作能否像在Web窗體

https://github.com/maartenba/MvcSiteMapProvider

在Web表單所有你需要的待辦事項是

<location path="SomePath"> 
    <system.web> 
     <authorization> 
     <allow roles="SomeRole" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

如果你不屬於SomeRole菜單項會被隱藏,可以在MvcSiteMap?

回答

0

在ASP.NET中推薦的方式來定義授權使用AuthorizeAttribute。當啓用securityTrimming時,MvcSiteMapProvider完全支持AuthorizeAttribute。見Registering the provider

+0

所以,如果你想改變哪些角色有權訪問某個區域,你必須重新編譯該網站?我喜歡的WebForms更好的解決方案的話..哦 – Anders

+0

@Anders - 將WebForms的解決方案基於在物理世界中存在的文件的每個網頁的事實。在MVC中,沒有文件。因此,基於物理目錄路徑配置安全性將毫無意義。 MVC基於控制器操作方法返回的資源。 'AuthorizeAttribute'被設計用來確保MVC資源只有授權用戶可以通過停止動作發生。這是MVC中唯一真正的安全措施(不管您認爲它有多「方便」)。請注意,ASP.NET 5現在提供代碼中的所有配置。 – NightOwl888

0

我知道這是一個老的文章,但爲了以防萬一別人發生時,你可以明確地達到你加入,你註冊的節點角色屬性到您mvc.sitemap文件查找的內容。任何不屬於該角色的人都將無法看到具有該屬性的節點。

<mvcSiteMapNode title="TheMenuOption" clickable="false" roles="someRole">