何时应使用HttpWebRequest.Credentials

时间:2012-01-14 01:44:57

标签: .net cookies httpwebrequest cookiecontainer

我尝试使用POST实例对需要身份验证的网址执行HttpWebRequest(具有内置成员资格系统的ASP.NET MV3标准[Authorize]修饰操作方法),但在NetworkCredentials中提供HttpWebRequest的登录和passowrd没有做到这一点。

我最终使用全球CookieContainer和两个HttpWebRequests

  1. 将请求CookieContainer设置为globalCookieContainer
  2. POST用户名和密码到登录URL。 (在该步骤之后,容器仍然报告Cookie计数为0)。
  3. 创建另一个HttpWebRequest实例,并将globalCookieContainer设置为请求CoockieContainer
  4. POST到需要身份验证的最终网址。出于某种原因,这次第二个请求对象将cookie作为请求的一部分提供,并且它会通过。
  5. cookie管理的整个“魔力”并没有在任何地方被描述(我真的试图搜索)。

    我们已经涵盖了这个场景。但在什么情况下应该使用HttpWebRequest.Credentials

1 个答案:

答案 0 :(得分:1)

当通过AuthenticationSchemes枚举中的一个方案执行身份验证时,将使用

HttpWebRequest.Credentials。其中,这包括Basic和Digest HTTP auth,NTLM和Kerberos。

也就是说,您可以通过在客户端派生NetworkCredential并在服务器端实施IAuthenticationModule来制作自己的自定义身份验证方案。