我會先閱讀官方Microsoft article關於擴展ASP.NET Membership API的內容。它談到創建額外的表格來存儲關於用戶的附加信息。
會員數據庫
- 如果你有一個現有的數據庫,其保存所有其他網站的信息,你可以運行aspnet_regsql.exe工具來生成所需的用戶表。然後你將需要修改你的web.config並添加SqlMembershipProvider和你的連接字符串。
- 如果您要創建新項目並且沒有數據庫,請從已啓用Membership的新MVC項目開始。您的數據庫將在第一次使用時在App_Data文件夾內創建,您可以將其添加到SQL/SQLEXPRESS服務器。然後,只需將連接字符串更改爲使用數據庫服務器而不是本地文件即可。
創建附加表
這部分實際上是相當簡單,由幾個簡單步驟:
- 創建新表,即的UserProfiles
- 添加
uniqueidentifier
列你的主鍵,並添加一個外鍵到aspnet_Users表
- 添加你想存儲的任何其他字段(手機,地址,性別等)
- 如果您使用的是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!
而這幾乎是它!
這顯然是一個簡單的例子,如果用戶是空你應該檢查,你還可以創建負責返回有關用戶的必要信息類,實現緩存,等等。