2009-07-23 73 views
9

我已經在IIS6上構建了一個MVC網站。我使用了無需成員資格的內置ASP.NET安全性,就像它在模板解決方案中實施的方式一樣。確保控制器或動作很容易,但現在我需要將用戶管理功能暴露給登錄到該站點的管理員。我明白,內置的ASP控制措施並不是「最佳實踐」,而且是一條可以工作的狗。那麼通過ASP.NET MVC應用程序提供用戶管理的最佳實踐是什麼?如何向MVC應用程序公開內置安全性和用戶管理?

我認爲使用實體框架和wireing它存儲特效的無數。但看起來很尷尬。我看到AccountMembershipService和FormsAuthenticationService的選項。這是現有的項目帳戶控制器使用的。但是,我不是對任何一方都不感冒。

我不禁想,這應該已經有從項目模板。這是任何網站的基本組成部分,你給了15%,爲什麼不休息?

+0

您將使用哪個版本的IIS?我很確定IIS 7爲用戶管理構建了一些內容。 – Perhentian 2009-07-24 11:52:33

+1

也許你應該只是更新你的問題,而不是發佈很多評論,使它更易於人們試圖回答你的問題:) – Peter 2009-07-27 10:25:28

回答

0

我有用戶驗證在一個有點理智的方式進行工作了。要克服的最大障礙是可以使用Membership類,儘管我沒有使用成員資格方面的信息。很容易獲得用戶名並執行Membership.GetUser(UserName)。然後,你可以做很多事情,如解鎖,批准/拒絕,更改密碼和更改密碼問題/答案...所有我需要的基礎知識。

這裏有最基礎的:

'get current logged in user 
Dim currentUser As MembershipUser = Membership.GetUser() 

'get current logged in user name 
Dim userName = currentUser.UserName 

'get current user email 
Dim userEmail = currentUser.Email 

'get a user to edit 
Dim editingUser = Membership.GetUser(UserName) 

'set the user email 
editingUser.Email = newEmail 
Membership.UpdateUser(editingUser) 

‘unlock user 
editingUser.UnlockUser() 

‘disapprove user 
editingUser.IsApproved = False 
Membership.UpdateUser(editingUser) 

‘approve user 
editingUser.IsApproved = True 
Membership.UpdateUser(editingUser) 

‘change pw 
editingUser.ChangePassword(oldPw, newPw) 

,這是大多都是有過它

1

據我所知,您正在使用SqlMembershipProvider作爲您的會員供應商實施。我強烈建議你看看會員用戶MembershipProvider類(如CreateUser等)的某些方法,以實現您正在嘗試執行的操作,而不是使用基礎數據庫表實施。

您還可以看看this article深入介紹ASP.NET的成員,角色和配置文件提供商。

+0

這聽起來像我去了一點的區域。感謝這篇文章。我認爲MVC只使用了這個功能的一部分,我想避免使用整個Membership機制。但也許這是一個壞主意,我們會看到。 – DrydenMaker 2009-07-27 14:26:34

+0

我還想指出,我一直在避免這樣的教程,因爲他們不真的適​​合MVC。好文章,但我澄清了一些事情。 – DrydenMaker 2009-07-27 19:17:54

0

我不知道的「最佳做法」,但是這是我會怎麼做(和它是如何排序的寫在「Professional ASP.NET MVC 1.0」):

你應該有一個自定義的(或默認的)ProfileProvider和MembershipProvider來實現這個功能。

創建一個控制器,該控制器處理所有的會員管理措施如。 MemberAdminController

該控制器應具備的授權[角色=「管理員」]指定所以在這個控制器的所有行動將只在用戶是管理員角色已處理的屬性。現在

可以構建CRUD意見和如何你想只用這個控制器動作。

相關問題