我从默认情况下制作了一个Mvc4应用程序。我已经在开始时给出了它。
我需要将修改后的UserProfile存储在我的数据库中,因此我更改了UserProfile类以满足我的需求,并且还更改了RegisterModel类。现在当我注册某人时,我有一个正确的视图,包含所有必要的字段,但是,当我打开Server Explorer进行检查时,我得到的UserProfile表只有UserId和UserName(但是模型中也应该有firstname,姓氏,电子邮件等)。
为正确存储它们应该修改哪些内容?
答案 0 :(得分:0)
成功登录后,我从webpages_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) });
从这里开始,我在另一个控制器上单独调用我的自定义“Membership”表,因为我将所有应用程序数据存储在与此OAuthMember表不同的数据库中。在我之前使用ASP.NET成员资格提供程序数据库的经验中,我始终将其作为与我的应用程序分开的数据库,并在多个应用程序中重用它。当然,如果你想修改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