通过表单身份验证从代码背后模拟用户

时间:2010-06-28 12:56:00

标签: .net-4.0 asp.net-4.0

使用表单身份验证时是否可以模拟用户?

问题是我想要用户的外部登录和只使用集成的Windows安全性的内部站点,并且用户需要被模拟。

我环顾四周,发现John的回答here非常好,但我不太清楚如何将它与我的Forms身份验证相混淆。

建议?


修改

我希望拥有<asp:Login />控件,此控件将针对Active Directory进行身份验证,该Active Directory与我要使用模拟的Windows机器具有相同的用户集。

我的问题是,我无法使用提供给<asp:Login />控件的相同用户名和密码来进行impersoante。

1 个答案:

答案 0 :(得分:1)

为了使该解决方案有效,您需要访问用户的ID和密码。我不相信你可以使用Login用户控件来获取它;您需要创建自己的登录表单并自行处理登录操作。在您进行身份验证后,当您需要访问内部站点时,请在会话中保留用户的ID和密码(最好是安全字符串),使用引用示例中的Impersonator类使用凭据模拟它们。 / p>

  using (var context = Impersonator.LogOn( username, password ))
  {
      try
      {
      ....
      }
      finally
      {
         context.Undo();
      }
  }