我只是不理解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并帮助我。)
答案 0 :(得分:5)
我没有写你提到的代码,所以我在这里错了,但我相信你所引用的ASP.NET代码确实与其会员提供商绑定。
如果您没有使用ASP.NET成员资格提供程序,我建议您直接使用DotNetOpenAuth(而不是通过Microsoft添加的外观),它没有这种紧密耦合。
答案 1 :(得分:1)
如果您不需要ASP.NET成员系统来提供系统上的本地登录帐户(存储在本地成员资格数据库中的帐户),那么我就不会使用任何基于WebMatrix的位(WebSecurity / OAuthWebSecurity) )。
它们实际上使得与DNOA交互更加困难,并且或多或少地同时隐藏所有有趣的位......
由于我需要本地帐户,我最终将所有源代码拉入我的源代码,然后从那里进行编辑(我还有其他理由这样做,不仅仅是为了丰富与DNOA的交互)。 / p>
如果您需要本地帐户 - 请使用WebMatrix 如果您不需要本地帐户 - 请直接使用DNOA。