0

最初に与えられたデフォルトから Mvc4 アプリケーションを作成します。

変更した UserProfile を DB に保存する必要があるため、ニーズを満たすために UserProfile クラスを変更し、RegisterModel クラスも変更しました。誰かを登録すると、必要なすべてのフィールドを含む正しいビューが表示されますが、サーバー エクスプローラーを開いて確認すると、UserId と UserName のみの UserProfile テーブルが表示されます (モデルによっては、firstname もあるはずです。姓、電子メールなど)。

それらを正しく保存するには、さらに何を変更する必要がありますか?

4

1 に答える 1

0

私は数ヶ月前に同じ場所にいました。問題の 1 つは、登録ストーリーがそのままでは完全に完成していないことです。たとえば、誰かが最初に登録してから外部アカウントをリンクすると、複数のプロファイルを持つことになります。

ログインに成功すると、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) });

ここから、この OAuthMember テーブルとは別のデータベースにすべてのアプリケーション データを保存するため、別のコントローラーのカスタム 'Membership' テーブルを個別に呼び出します。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

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 に答える