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. 仅当链接被点击时才显示文字