根据登录用户显示/隐藏菜单项

时间:2010-03-18 06:05:49

标签: asp.net-mvc security

在我的网络应用中,我想只向以管理员身份添加到数据库的用户显示“管理员”菜单链接。

在ASP.NET MVC 2中执行此操作的最佳方法是什么?

目前,我是通过检查用户是否存在于每个页面的Admin数据库表中来实现的。显然,必须有更好的方法来做到这一点。

如果有帮助,我正在使用Windows Auth。

1 个答案:

答案 0 :(得分:0)

您可以将管理状态保存在会话变量或其他内容中,但似乎更适合使用菜单创建部分视图(如果您还没有)并且只是在那里进行检查。您仍然会在每个页面请求上为它调用数据库,但不会重复代码。除非你现在遇到性能问题,否则一个额外的电话真的没什么大不了的。

如果确实存在性能问题,请确保优化自己的代码,在db等上获得所有正确的索引。通常可以通过重构如何完成任务,而不是完成

<强>更新
在ASP.NET MVC 2中,实际上有一种更好的方法可以实现这一点,组合Html.RenderAction()AuthorizeAttribute(或者可能编写自己的继承属性来设置标志而不是在用户返回错误时未经授权)。这样,您可以最大限度地减少视图逻辑,并更好地符合MVC原则。