2010-11-09 53 views
5

我已經完成了MVC,但我是ASP和ASP MVC的新手。到目前爲止,我真的很喜歡ASP MVC爲我提供的易用性,但我無法弄清楚如何更好地控制用戶。默認情況下,MVC提供最小的用戶註冊表單。我看了很多,但我仍然有兩個問題:ASP MVC用戶配置文件

  1. 如何使用戶數據庫在我的項目中的本地數據庫?我認爲SQLEXPRESS用於存儲用戶值,看起來像一個神奇的過程。我該如何解除魔法?我想對這個數據庫的位置有更多的控制權。

  2. 這會導致另一個問題:如何擴展用戶?我一直在閱讀個人檔案,但我仍然對一些事情感到困惑。如何準備個人資料並將其與用戶鏈接?什麼作爲外鍵?而且,在我的控制器中,我如何訪問用戶的各種部分,如用戶名,電子郵件,甚至是像名字,姓氏這樣的配置文件(儘管我有一次當我擁有Profile的數據庫和用戶數據庫時,我可以運行SQL命令來檢索數據)

我真的很感激一些指針到合適的資源,和/或與ASP.NET

最佳實踐

回答

3

我會從這裏開始:

也是一個偉大的系列文章(18篇文章!)是由斯科特·米切爾4GuysFromRolla

ASP.NET成員資格模型設計爲具有可插拔架構。你可以寫你自己的MembershipProvider實現,最適合你的需求。

即使您在網絡上發現的大多數樣本都關注ASP.NET Web表單,但與MVC一起使用時只有很小的差異。

8

我會先閱讀官方Microsoft article關於擴展ASP.NET Membership API的內容。它談到創建額外的表格來存儲關於用戶的附加信息。

會員數據庫

  1. 如果你有一個現有的數據庫,其保存所有其他網站的信息,你可以運行aspnet_regsql.exe工具來生成所需的用戶表。然後你將需要修改你的web.config並添加SqlMembershipProvider和你的連接字符串。
  2. 如果您要創建新項目並且沒有數據庫,請從已啓用Membership的新MVC項目開始。您的數據庫將在第一次使用時在App_Data文件夾內創建,您可以將其添加到SQL/SQLEXPRESS服務器。然後,只需將連接字符串更改爲使用數據庫服務器而不是本地文件即可。

創建附加表

這部分實際上是相當簡單,由幾個簡單步驟:

  1. 創建新表,即的UserProfiles
  2. 添加uniqueidentifier列你的主鍵,並添加一個外鍵到aspnet_Users表
  3. 添加你想存儲的任何其他字段(手機,地址,性別等)
  4. 如果您使用的是LINQ-to-SQL或實體框架,您可以簡單地將需要的表拖到設計器中,然後您就可以準備好查詢Membership表。

下面是關於使用

一個小樣本這個片段添加到您的資料庫負責資料/帳戶信息。

public aspnet_User GetUser() 
{ 
    MembershipUser user = Membership.GetUser(); 
    return db.aspnet_Users.SingleOrDefault(u => u.UserId == user.ProviderUserKey); 
} 

然後你的模型裏面,你可以得到用戶和訪問存儲在您的UserProfiles表中的其他信息。

AccountRepo accountRepo = new AccountRepo(); 
aspnet_User user = accountRepo.GetUser(); 
string Address = user.UserProfile.Address; // bingo! 

而這幾乎是它!

這顯然是一個簡單的例子,如果用戶是你應該檢查,你還可以創建負責返回有關用戶的必要信息類,實現緩存,等等。