0

我从一开始就给定的默认值制作了一个 Mvc4 应用程序。

我需要将修改后的 UserProfile 存储在我的数据库中,因此我更改了 UserProfile 类以满足我的需求,还更改了 RegisterModel 类。现在,当我注册某人时,我有一个正确的视图,其中包含所有必要的字段,但是,当我打开服务器资源管理器进行检查时,我得到一个仅包含 UserId 和 UserName 的 UserProfile 表(但模型也应该有名字,姓氏、电子邮件等)。

为了正确存储它们,应该修改什么?

4

1 回答 1

0

几个月前我在同一个地方。问题之一是注册故事并没有完全开箱即用。例如,如果有人先注册然后链接他们的外部帐户,他们可能会获得多个个人资料。

成功登录后,我从 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

http://blogs.msdn.com/b/pranav_rastogi/archive/2012/08/23/plugging-custom-oauth-openid-providers.aspx

http://blogs.msdn.com/b/webdev/archive/2012/08/24/customizing-the-login-ui-when-using-oauth-openid.aspx

http://blogs.msdn.com/b/webdev/archive/2012/09/12/integrate-openauth-openid-with-your-existing-asp-net-application-using-universal-providers.aspx

http://blogs.msdn.com/b/webdev/archive/2012/09/19/configuring-your-asp-net-application-for-microsoft-oauth-account.aspx

http://blogs.msdn.com/b/rickandy/archive/2012/08/15/initializessimplemembership-attribute-and-simplemembership-exceptions.aspx

于 2012-11-05T18:05:46.800 回答