Q
訪問顯示鏈接僅
1
A
回答
4
我不認爲有這樣一個簡單的解決方案,而不反映Controller
,得到Action
和檢查AuthorizationFilters
。
即便如此,另一種解決方案可能是創建一個Html.ActionLink
的擴展方法重載,其中需要角色名稱並檢查User.IsInRole(roleName)
。如果用戶有權訪問指定的角色,則只輸出一個鏈接。
事情是這樣的:
public static class EntentionMethods
{
public static MvcHtmlString ActionLink(this HtmlHelper helper, string linkText, string actionName, string controllerName, string roleName)
{
if (!helper.ViewContext.RequestContext.HttpContext.User.IsInRole(roleName))
{
return MvcHtmlString.Empty;
}
return helper.ActionLink(linkText, actionName, controllerName);
}
}
不漂亮,你可能一直希望,但是這往往提供的需求。
1
Authorize屬性應放置在您想限制訪問的控制器動作(或控制器本身)上,這樣您只強制執行角色爲「somerole」的用戶訪問生成和來自的鏈接控制器的行爲。您想要限制訪問的鏈接將不會從「授權」屬性中顯示。如果明確定義角色和用戶,它只會限制和強制角色中的用戶或具有特定名稱的用戶訪問操作。
1
一種可能性是使用MvcSiteMapProvider作爲菜單。它具有內置的security trimming功能,可根據AuthorizeAttribute自動隱藏鏈接。如果您不喜歡內置的HTML助手,您可以自定義模板和/或構建您自己的HTML助手,以隱藏基於節點可訪問性的鏈接。或者,如果您不想使用第三方庫,則可以對AuthorizeAttributeAclModule進行逆向工程,以制定您自己的實施方案。
全面披露
我MvcSiteMapProvider的主要貢獻者。
相關問題
- 1. PHP鏈接顯示問題
- 2. 僅顯示超鏈接文字而不顯示整個鏈接網址
- 3. 僅在沒有鏈接時才使用ColdFusion顯示鏈接?
- 4. PivotViewer無法顯示集合 - 僅顯示鏈接到cxml文件
- 5. 用於顯示和訪問CMS鏈接的邏輯?
- 6. 在JavaScript鏈接上顯示訪問顏色
- 7. 當鏈接被訪問時突出顯示圖像
- 8. 訪問iframe鏈接
- 9. Android WebView鏈接突出顯示問題
- 10. CSS問題:鏈接顯示不正確
- 11. 鏈接未顯示
- 12. asp:超鏈接顯示無超鏈接
- 13. 鏈接內顯示塊鏈接問題,這兩個鏈接激活
- 14. 如何僅通過某些鏈接訪問網頁
- 15. 自舉和訪問鏈接
- 16. 鏈接條件ms訪問
- 17. 訪問一個錨鏈接
- 18. 超鏈接到在訪問
- 19. 訪問html css鏈接
- 20. 訪問從Java的鏈接
- 21. MS-訪問:雙鏈接表
- 22. 訪問固定鏈接
- 23. 僅當我不在頁面上時才能顯示鏈接?
- 24. Django僅顯示超鏈接到對象的創建者
- 25. 如何僅顯示已登錄用戶的鏈接?
- 26. 返回頁首鏈接僅顯示在非移動設備上
- 27. PHP Grid僅在第一行顯示編輯/刪除鏈接
- 28. 僅在視圖中顯示次要鏈接
- 29. Modal對話框僅在點擊第一個鏈接後顯示
- 30. 僅當鏈接被點擊時才顯示文字