2

Visual Studio 2012 の既定の MVC4 インターネット アプリケーション プロジェクト テンプレートで Google OAuth を動作させるのに問題があります。

Google にリダイレクトし、続いてユーザー名を登録した後、AccountController の 276 行目に次のメッセージとともにMembershipCreateUserExceptionがスローされます。

指定されたユーザー名は無効です。

失敗したコード行は次のとおりです。

OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);

データベースを確認しましたが、UserProfiles テーブルには入力したユーザー名が含まれており、ユーザー名のさまざまな組み合わせを試しました。

ソースコード内のリンクされた記事のどれも、他に構成が必要なことを示唆していないため、何かを見逃していませんか?

4

2 に答える 2

1

まず、私の経験をここに残したいと思います。(asp.net mvc4)

  1. SimpleMembership プロバイダーの dbcontext を変更します。Filter フォルダーに移動 -> InitializeSimpleMembershipAttribute を開きます。次に、このような変更を行います。したがって、データベースにメンバーシップ テーブルが含まれます。

    WebSecurity.InitializeDatabaseConnection("ChangeYourDbContext", "UserProfile", "UserId", "UserName", autoCreateTables: true);
    
  2. AccontController に移動します。デフォルトで defaultConnection 文字列を使用する UserContext を見つけます。UserContext 宣言 ( f12) に進みます。UserContext 接続文字列を実際のDbcontextにオーバーライドします

    public UsersContext(): base("YourAcutalDbContext")
    {
    
    }
    
于 2013-04-28T14:02:31.037 に答える
1

私はそれを理解したと思います。OAuthWebSecurity.CreateOrUpdateAccount には、Users テーブルにユーザーが含まれている必要があります。

webpages_OAuthMembership問題は、このメソッドがユーザー テーブルへの外部キーを持つ新しいレコードをテーブルに「作成」することです。

したがって、呼び出しを機能させるには、最初に WebSecurity.CreateAccount を介して新しいユーザーを作成するか、ユーザーをテーブルに追加する手動コードを記述します。

私は WebSecurity.CreateAccount に行き、GeneratePassword メソッドを使用してそのビットを回避しました。

それが役に立てば幸い。

于 2012-12-30T23:38:01.140 に答える