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(..).

现在,我们需要创建一个SecurityManager接受三个参数的类 ..。第三个参数是什么?一个OAuthDataProvider?这被定义为静态,这里:

internal static IOpenAuthDataProvider OAuthDataProvider =
    new WebPagesOAuthDataProvider();

这创建了一个WebPagesOAuthDataProvider. 这是我的问题。这是什么?为什么它必须紧密耦合到一个ExtendedMembershipProvider?什么是ExtendedMembershipProvider? 为什么需要这个?

在我的 Web 应用程序中,我尝试使用 RavenDb 数据库和我自己的自定义主体和自定义身份。与 ASP.NET 附带的MembershipSimpleMembership无关。

那个类是什么,为什么要使用它等?它的目的是什么?这是 DNOA 需要的吗?为什么?

4

2 回答 2

5

我没有写你提到的代码,所以我在这里可能是错的,但我相信你提到的 ASP.NET 代码确实绑定到他们的 Membership 提供程序。

如果您不使用 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 回答