2010-08-12 67 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