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. 僅顯示未訪問的鏈接
- 2. PHP鏈接顯示問題
- 3. 僅顯示超鏈接文字而不顯示整個鏈接網址
- 4. 僅在沒有鏈接時才使用ColdFusion顯示鏈接?
- 5. PivotViewer無法顯示集合 - 僅顯示鏈接到cxml文件
- 6. 鏈接不顯示鏈接
- 7. 訪問iframe鏈接
- 8. 訪問鏈接CSS
- 9. iOS a:訪問的鏈接顯示默認的紫色
- 10. 在Umbraco中訪問/顯示鏈接文檔類型的屬性
- 11. 在JavaScript鏈接上顯示訪問顏色
- 12. 用於顯示和訪問CMS鏈接的邏輯?
- 13. 當鏈接被訪問時突出顯示圖像
- 14. 訪問 - 超鏈接不鏈接
- 15. Android WebView鏈接突出顯示問題
- 16. 鏈接未顯示
- 17. 鏈接到顯示
- 18. 鏈接內顯示塊鏈接問題,這兩個鏈接激活
- 19. jqGrd超鏈接或顯示鏈接
- 20. asp:超鏈接顯示無超鏈接
- 21. Opencart 2.x僅通過鏈接訪問產品
- 22. 如何僅向未訪問鏈接添加下劃線?
- 23. 如何僅通過某些鏈接訪問網頁
- 24. 鏈接條件ms訪問
- 25. 修改鏈接表訪問
- 26. 訪問鏈接使用PHP
- 27. 訪問從Java的鏈接
- 28. 訪問鏈接列表
- 29. 超鏈接訪問顏色
- 30. 未訪問MVC鏈接