ExtendedMembershipProviderの独自の実装をカスタマイズしようとしています。GetUserIDFromOauthメソッドが何をするのかわかりませんか?デフォルトで例外がスローされており、オープン認証プロバイダーからユーザーIDを返すことになっていることがわかります。
そのユーザーがシステムに存在するかどうかを見つけることを意味しない限り、これがどのように行われるべきかわかりませんか?それが目的ですか?ドキュメントが不足していると混乱します...
ありがとう。
ExtendedMembershipProviderの独自の実装をカスタマイズしようとしています。GetUserIDFromOauthメソッドが何をするのかわかりませんか?デフォルトで例外がスローされており、オープン認証プロバイダーからユーザーIDを返すことになっていることがわかります。
そのユーザーがシステムに存在するかどうかを見つけることを意味しない限り、これがどのように行われるべきかわかりませんか?それが目的ですか?ドキュメントが不足していると混乱します...
ありがとう。
GetUserIdFromOAuth
は、 OAuthまたはOpenIdプロバイダーに基づいて取得したWebアプリケーションデータベースのユーザーのテーブルで検索するためにExtendedMembershipProvider
クラスで使用されるメソッドです。指定したユーザーのデータを取得したら、データベースに保存する必要があります。User.Id
Provider
ProviderUserId
Provider
ProviderUserId
デフォルトで戻り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;
}
この実装では、テーブルProvider
にProviderUserId
フィールドがあることを前提としていUser
ます。この情報が別のテーブルに保存されている場合は、LINQを変更して目的の結果を返す必要があります。