在MVC应用程序中使用Microsoft.Web.WebPages.OAuth.OAuthWebSecurity

时间:2012-10-04 15:01:07

标签: c# asp.net asp.net-mvc dotnetopenauth

我只是不理解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类..它接受三个args。什么是第三个arg? OAuthDataProvider?这被定义为静态,在这里:

internal static IOpenAuthDataProvider OAuthDataProvider =
    new WebPagesOAuthDataProvider();

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

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

有人可以帮帮我吗?这是什么类,为什么使用它等?它的目的是什么?这是DNOA要求的吗?为什么?

(我也暗暗希望Andrew Arnott会看到这个Q并帮助我。)

2 个答案:

答案 0 :(得分:5)

我没有写你提到的代码,所以我在这里错了,但我相信你所引用的ASP.NET代码确实与其会员提供商绑定。

如果您没有使用ASP.NET成员资格提供程序,我建议您直接使用DotNetOpenAuth(而不是通过Microsoft添加的外观),它没有这种紧密耦合。

答案 1 :(得分:1)

如果您不需要ASP.NET成员系统来提供系统上的本地登录帐户(存储在本地成员资格数据库中的帐户),那么我就不会使用任何基于WebMatrix的位(WebSecurity / OAuthWebSecurity) )。

它们实际上使得与DNOA交互更加困难,并且或多或少地同时隐藏所有有趣的位......

由于我需要本地帐户,我最终将所有源代码拉入我的源代码,然后从那里进行编辑(我还有其他理由这样做,不仅仅是为了丰富与DNOA的交互)。 / p>

如果您需要本地帐户 - 请使用WebMatrix 如果您不需要本地帐户 - 请直接使用DNOA。