5

Microsoft.Web.WebPages.OAuth名前空間の一部のコード、特にOAuthWebSecurityクラスを理解していません。

ここではこの方法です:

internal static void RequestAuthenticationCore(HttpContextBase context, 
    string provider, string returnUrl)
{
    IAuthenticationClient client = GetOAuthClient(provider);
    var securityManager = new OpenAuthSecurityManager(context, 
        client, OAuthDataProvider);
    securityManager.RequestAuthentication(returnUrl);
}

最初の行は問題ありません=>この認証要求のプロバイダーデータを取得します。これがであるとしましょうTwitterClient(..)

次に、3つの引数を受け入れるクラスを作成する必要がありますSecurityManager。その3番目の引数は何ですか?OAuthDataProvider?_ これは静的なものとして定義されています。

internal static IOpenAuthDataProvider OAuthDataProvider =
    new WebPagesOAuthDataProvider();

そして、これはを作成しWebPagesOAuthDataProviderます。これが私の問題です。これは何ですか?そして、なぜそれは緊密に結合されなければならないのExtendedMembershipProviderですか?とは何ExtendedMembershipProviderですか?なぜこれが必要なのですか?

私のWebアプリケーションでは、RavenDbデータベースと独自のカスタムプリンシパルおよびカスタムIDを使用しようとしています。ASP.NETに付属するMembershipまたはSimpleMembershipとは何の関係もありません。

そのクラスとは何ですか、なぜそれが使用されるのですか?それは何の目的ですか?これはDNOAが必要とするものですか?なぜ?

4

2 に答える 2

5

私はあなたが言及したコードを書いていなかったので、ここで間違っている可能性がありますが、あなたが参照しているASP.NETコードは確かにメンバーシッププロバイダーにバインドされていると思います。

ASP.NETメンバーシッププロバイダーを使用していない場合は、DotNetOpenAuthを直接使用することをお勧めします(Microsoftが追加したファサードを介してではなく)。これには、このような緊密な結合はありません。

于 2012-10-05T03:48:23.690 に答える
1

システムにローカルログインアカウント(ローカルメンバーシップデータベースに格納されているアカウント)を提供するためにASP.NETメンバーシップシステムが必要ない場合は、WebMatrixベースのビット(WebSecurity / OAuthWebSecurity)を使用するルートをたどりません。

それらは実際にDNOAとの対話を困難にし、とにかく同時にすべての興味深いビットを多かれ少なかれ隠します...

ローカルアカウントが必要だったので、このためのすべてのソースコードをソースコードに取り込み、そこから編集することになりました(DNOAとのやり取りを充実させるだけでなく、これを行う理由は他にもありました)。

ローカルアカウントが必要な場合-WebMatrixを使用しますローカルアカウントが必要ない場合-DNOAを直接使用します。

于 2012-11-29T09:37:31.280 に答える