我不理解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随附的Membership或SimpleMembership无关。
该类是什么,为什么使用它,等等?目的是什么?这是DNOA要求的吗?以及为什么?
我没有写您提到的代码,所以我在这里可能是错误的,但是我相信您引用的ASP.NET代码确实绑定到其成员资格提供程序。
如果您不使用ASP.NET成员资格提供程序,我建议您直接使用DotNetOpenAuth(而不是通过Microsoft添加的外观),它没有这种紧密的耦合。
如果您不需要ASP.NET成员资格系统来在您的系统上提供本地登录帐户(存储在本地成员身份数据库中的帐户),我就不会沿用任何基于WebMatrix的位(WebSecurity / OAuthWebSecurity) 。
它们实际上使与DNOA的交互变得更加困难,并且无论如何还是几乎同时隐藏了所有有趣的位...
由于我需要本地帐户,因此最终将所有源代码都提取到源代码中,然后从那里进行编辑(我还有其他原因这样做,不仅是为了丰富与DNOA的交互性。]]
如果您需要本地帐户,请使用WebMatrix如果您不需要本地帐户,请直接使用DNOA。