2010-08-12 75 views
0

我目前在我的网站上使用了两个角色,作者& admin。作者无法访问用户管理功能。但是,他们应该能够编辑其配置文件的某些部分。管理员目前能够编辑用户个人资料的所有部分。例如:控制器/视图中的条件/限制访问? (MVC2)

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

我想在可能的情况下重新使用代码。我不确定这里最好的解决方案是什么。有两件事情处理

  1. 只允许用户编辑自己的个人资料,而不是别人
  2. 画地为牢哪些字段用户可以编辑VS哪些字段管理员可以编辑

我想#1最好通过自定义的授权属性来实现(我已经有一个我可以进一步扩展)。如果你有更好的方法,请分享。 #2我不确定,查看模型?我有我的允许字段绑定到一个用户使用部分类,这将是不同的每个角色。

回答

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或者自己推出一些东西。

+0

确实。它看起来像UpdateModel()有第三/第四个参数,所以我可以明确地包含/排除用户应该/不应该能够更新的属性。谢谢 – ryan 2010-08-12 13:16:47