我将从阅读这篇关于扩展 ASP.NET Membership API 的官方Microsoft 文章开始。它讨论了创建额外的表来存储有关用户的其他信息。
会员资料库
- 如果您有一个包含所有其他网站信息的现有数据库,则可以运行aspnet_regsql.exe工具来生成必要的用户表。然后,您需要修改 web.config 并添加 SqlMembershipProvider 以及您的连接字符串。
- 如果您正在创建一个新项目并且没有数据库,请从一个已启用 Membership 的新 MVC 项目开始。您的数据库将在首次使用时在 App_Data 文件夹中创建,您可以将其附加到您的 SQL/SQLEXPRESS 服务器。然后只需更改连接字符串以使用数据库服务器而不是本地文件。
创建附加表
这部分实际上非常简单,由几个简短的步骤组成:
- 创建一个新表,即UserProfiles
- 添加一
uniqueidentifier
列作为主键,并将外键添加到 aspnet_Users 表
- 添加您要存储的任何其他字段(电话、地址、性别等)
- 如果您使用的是 LINQ-to-SQL 或实体框架,您只需将所需的表拖到设计器上,即可查询成员资格表。
这是一个关于使用的小例子
将此代码段添加到负责配置文件/帐户信息的存储库中。
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!
差不多就是这样!
这显然是一个简单的示例,您应该检查用户是否为空,您还可以创建一个类来负责返回有关用户的必要信息,实现缓存等。