在MVC应用程序中使用Microsoft.Web.WebPages.OAuth.OAuthWebSecurity进行粘贴

问题描述 投票:5回答:2

我不理解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。那第三个参数是什么? OAuthDataProvider?在这里定义为静态:

internal static IOpenAuthDataProvider OAuthDataProvider =
    new WebPagesOAuthDataProvider();

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

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

该类是什么,为什么使用它,等等?目的是什么?这是DNOA要求的吗?以及为什么?

c# asp.net asp.net-mvc dotnetopenauth
2个回答
5
投票

我没有写您提到的代码,所以我在这里可能是错误的,但是我相信您引用的ASP.NET代码确实绑定到其成员资格提供程序。

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


1
投票

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

它们实际上使与DNOA的交互变得更加困难,并且无论如何还是几乎同时隐藏了所有有趣的位...

由于我需要本地帐户,因此最终将所有源代码都提取到源代码中,然后从那里进行编辑(我还有其他原因这样做,不仅是为了丰富与DNOA的交互性。]]

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

© www.soinside.com 2019 - 2024. All rights reserved.