2009-08-20 106 views
3

我有一個超級簡單的ASP.NET MVC應用程序,它使用RpxNow(OpenID)來允許用戶登錄。我現在想讓用戶編輯他們自己的帳戶並提供管理員訪問權限來編輯任何人的帳戶。ASP.NET MVC沒有數據庫的角色(也沒有角色提供者)

我有兩個單獨的 「編輯帳戶」 的觀點:

  • 〜/帳號/編輯/
  • 〜/帳號/編輯/ 1

第一負載帳戶詳細信息基礎上登錄的用戶。第二個使用提供的AccountId加載帳戶詳細信息。第一個是標準用戶,第二個是管理員。首先,我需要定義角色(用戶,管理員),然後我需要爲該角色分配一個用戶帳戶(或多個)。

然後我需要檢查控制器中的角色。我喜歡這個概念:

http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/

所以,下到的問題:

  1. 有沒有一種簡單的方法來定義在web.config中的角色列表?
  2. 有沒有簡單的方法來定義哪些用戶在web.config中的哪些角色?
  3. 有沒有辦法做到這一點,而不使用會員/角色提供者?
  4. 我從錯誤的角度來看待這個嗎?我應該將應用程序分成兩個分支並根據文件夾授權進行保護嗎?

回答

3

我不是將授權數據存儲在web.config中的朋友。我更喜歡將其存儲在數據庫或其他XML文件中。

看看Xml Membership/Role Provider。這使用Membership/Role來讀取userdata,但是它顯示了一種存儲和讀取來自xml文件的用戶授權數據的方式。

修補應用程序woulded移動的問題,而不是解決。

+0

我實現了一個自定義角色提供程序。在旁註中,我並不喜歡默認的Membership表結構,特別是對於OpenID。 – Junto 2009-08-21 08:49:44

0

請記住,整個權限管道仍然圍繞着IPrincipals進行,角色/成員資格提供者只是修飾窗口以允許大多數應用程序不必編寫管道代碼。在這種情況下,您可以輕鬆地添加一個數據庫支持的(或者只是列表足夠短的靜態)角色列表以及角色中的用戶列表並查詢該列表。將它包裝在一個定製的IPrincipal後面,並在適當的地方將那隻小狗放在那裏,而你是金黃色的。