我从一开始就给定的默认值制作了一个 Mvc4 应用程序。
我需要将修改后的 UserProfile 存储在我的数据库中,因此我更改了 UserProfile 类以满足我的需求,还更改了 RegisterModel 类。现在,当我注册某人时,我有一个正确的视图,其中包含所有必要的字段,但是,当我打开服务器资源管理器进行检查时,我得到一个仅包含 UserId 和 UserName 的 UserProfile 表(但模型也应该有名字,姓氏、电子邮件等)。
为了正确存储它们,应该修改什么?
我从一开始就给定的默认值制作了一个 Mvc4 应用程序。
我需要将修改后的 UserProfile 存储在我的数据库中,因此我更改了 UserProfile 类以满足我的需求,还更改了 RegisterModel 类。现在,当我注册某人时,我有一个正确的视图,其中包含所有必要的字段,但是,当我打开服务器资源管理器进行检查时,我得到一个仅包含 UserId 和 UserName 的 UserProfile 表(但模型也应该有名字,姓氏、电子邮件等)。
为了正确存储它们,应该修改什么?
几个月前我在同一个地方。问题之一是注册故事并没有完全开箱即用。例如,如果有人先注册然后链接他们的外部帐户,他们可能会获得多个个人资料。
成功登录后,我从 pages_OAuthMembership 表中提取用户 ID。
if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: true)) {
var oAuthMembership = new EndeavorODataEntities().webpages_OAuthMembership
.Where(u => u.ProviderUserId == result.ProviderUserId)
.FirstOrDefault(x => x.Provider == result.Provider) ??
new webpages_OAuthMembership
{
Provider = result.Provider,
ProviderUserId = result.ProviderUserId,
};
TempData.Add("OAuthMembership", oAuthMembership);
HttpContext.Response.Cookies.Add(new HttpCookie("UserId", oAuthMembership.UserId.ToString(CultureInfo.InvariantCulture)));
return RedirectToAction("Summary", new { Controller = "Member", id = oAuthMembership.UserId.ToString(CultureInfo.InvariantCulture) });
从这里,我在另一个控制器上对我的自定义“会员”表进行单独调用,因为我将所有应用程序数据存储在与此 OAuthMember 表不同的单独数据库中。在我之前使用 ASP.NET Membership 提供程序数据库的经验中,我总是将它作为与我的应用程序分开的数据库,在多个应用程序中重用它。当然,如果您希望修改 UserProfile 或其他表,从上面的代码中可以看出,这只是一个 LINQ 语句。没有什么可以说您也不能在此处执行对 UserProfiles 表的连接。
在上面的这个例子中,我创建了一个 edmx 文件 OAuthMembership.edmx 并像任何其他数据库一样从 SQL 导入我的表。EndeavorODataEntities 是我的连接字符串的名称,webpages_OAuthMembership 是实际成员资格表的名称。
我添加了一些我使用过的其他资源,可能会对您有所帮助。
http://blogs.msdn.com/b/webdev/archive/2012/08/22/extra-information-from-oauth-openid-provider.aspx