控制器/视图中的条件/限制访问? (MVC2)

时间:2010-08-12 12:16:05

标签: c# asp.net-mvc-2

我目前在我的网站上使用了两个角色,作者&管理员。作者无法访问用户管理功能。但是,他们应该能够编辑其个人资料的某些部分。管理员目前能够编辑用户个人资料的所有部分。例如:

employee ID   [admin]
display name  [author,admin]
roles         [admin]

我想尽可能重用代码。我不确定这里最好的解决方案是什么。有两件事要处理

  1. 仅允许用户编辑自己的个人资料而非其他人
  2. 限制用户可以编辑的字段与管理员可以编辑的字段
  3. 我认为#1最好通过自定义Authorize属性实现(我已经有一个我可以进一步扩展)。如果您有更好的方法,请分享。 #2我不确定,查看模型?我使用部分类为用户绑定了允许的字段,对于每个角色都是不同的。

1 个答案:

答案 0 :(得分:1)

您的#1解决方案已经开启,您需要使用AuthorizeAttribute

对于#2,你可以只为特定用户渲染进行安全修整。

视图中的某些伪代码(或将其移动到部分视图):

if administrator
    render employee ID text box
if administrator || author
    render display name text box
if administrator
    render roles check list

因此,您需要控制如何确定用户是否处于“角色”状态。您可以使用ASP.NET's Membership Provider或自己动手。