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链接