【发布时间】:2010-02-04 21:23:18
【问题描述】:
我见过一些类似的问题,但没有一个看起来像我正在尝试做的。
这是我当前的实现,没有任何安全性:
<div id="menucontainer">
<ul id="menu">
<li><%= Html.ActionLink("Main List", "Index", "AController")%></li>
<li><%= Html.ActionLink("Product List", "Index", "BController")%></li>
<li><%= Html.ActionLink("Company List", "Index", "CController")%></li>
<li><%= Html.ActionLink("User List", "Index", "DController")%></li>
</ul>
</div>
这很好,上面的工作。我在 CController 和 DController 的操作上设置了 [Authorize] 属性,以防止未经授权的访问——但我想为没有正确角色的用户从菜单中删除这些项目,因为当他们看到并单击在它上面,它告诉他们他们没有权限,他们会想要它。如果他们不知道它的存在,那对所有相关人员来说都会更好......
这样的事情最终是我想要达到的目标,但我正在寻找更多 MVC 风格的方法,其中“视图”是“愚蠢的”:
<div id="menucontainer">
<ul id="menu">
<li><%= Html.ActionLink("Main List", "Index", "AController")%></li>
<li><%= Html.ActionLink("Product List", "Index", "BController")%></li>
<% If(Role = Roles.Admin) { %>
<li><%= Html.ActionLink("Company List", "Index", "CController")%></li>
<li><%= Html.ActionLink("User List", "Index", "DController")%></li>
<% } %>
</ul>
</div>
【问题讨论】:
-
我是……我想。有两个级别的用户,普通和管理员。只有管理员可以看到公司和用户列表,控制器上的 [Authorize] 属性可以防止未经授权的访问,但我想对非管理员隐藏视图,这样他们甚至都不知道它在他们的脑海中。跨度>
标签: c# .net asp.net asp.net-mvc security