如何使用ASP.NET MVC将某些HTML元素限制为某些角色?

时间:2011-11-22 05:09:30

标签: asp.net-mvc security authorization

我正在寻找标准做法,指定某个HTML元素,例如“创建用户”按钮,只有在用户登录并且属于角色“管理员”时才会显示。

例如,在Java中使用Spring MVC,Spring Security标记库有一个控件可以实现:

<sec:authorize access="hasRole('ROLE_PRESIDENT')">
    <input type="button" value="Launch nuclear weapons"/>
</sec:authorize>

标签之间出现的内容只会在用户属于指定角色时显示。

ASP.NET MVC有这样的功能吗?

3 个答案:

答案 0 :(得分:4)

对于Razor视图引擎:

@if (User.IsInRole("ROLE_PRESIDENT")) {
    <input type="button" value="launch nuclear weapons" />
}

对于Webforms视图引擎:

<% if (User.IsInRole("ROLE_PRESIDENT")) { %>
    <input type="button" value="launch nuclear weapons" />
<% } %>

答案 1 :(得分:3)

如果您需要整个网站的元素级安全性,建议您为每个元素创建custom HtmlHelpers,这些元素都会实现您的渲染安全规则。

注意:在您的视图中包含角色检查的if语句将无法维护

答案 2 :(得分:0)

@If User.IsInRole(“Administrator”)然后'无论如何 结束如果

类似应该工作