3

ExtendedMembershipProviderの独自の実装をカスタマイズしようとしています。GetUserIDFromOauthメソッドが何をするのかわかりませんか?デフォルトで例外がスローされており、オープン認証プロバイダーからユーザーIDを返すことになっていることがわかります。

そのユーザーがシステムに存在するかどうかを見つけることを意味しない限り、これがどのように行われるべきかわかりませんか?それが目的ですか?ドキュメントが不足していると混乱します...

ありがとう。

4

1 に答える 1

3

GetUserIdFromOAuthは、 OAuthまたはOpenIdプロバイダーに基づいて取得したWebアプリケーションデータベースのユーザーのテーブルで検索するためにExtendedMembershipProviderクラスで使用されるメソッドです。指定したユーザーのデータを取得したら、データベースに保存する必要があります。User.IdProviderProviderUserIdProviderProviderUserId

デフォルトで戻りthrow new NotImplementedException();ます。User.Idアプリケーションデータベースから整数を返すには、このメソッドを実装する必要があります。

これはサンプル実装です:


    public override int GetUserIdFromOAuth(string provider, string providerUserId)
    {
        using (var context = new YourApplicationEntities())
        {
            // Try to find user with certain Provider and ProviderUserId
            var user = context.Users.SingleOrDefault(
                           q => q.Provider == provider &&
                           q.ProviderUserId == providerUserId
            );

            if (user != null)
            {
                 return user.Id;
            }
        }

        return -1;
    }

この実装では、テーブルProviderProviderUserIdフィールドがあることを前提としていUserます。この情報が別のテーブルに保存されている場合は、LINQを変更して目的の結果を返す必要があります。

于 2012-12-10T09:29:22.917 に答える