如何在IIS7上跳过某些用户的身份验证?

时间:2010-08-30 15:59:43

标签: c# asp.net iis-7 login

我正在使用C#和.NET编写软件来管理我的商店,该商店有一个网站,您可以选择接收卖家访问。这个站点有一个幕后管理器,但我希望软件能够这样做,有效地删除浏览器管理器,实现这一目标的第一步是允许软件访问生成所需XML文件的PHP脚本。

问题是,用C#编写并使用web.config的登录机制不允许软件访问所述脚本,该脚本位于浏览器管理器的受保护文件夹中。我已经尝试过使用HttpWebRequest对象,WebClient对象有很多os组合的帖子,凭据,流甚至是一个特殊的用户代理来尝试登录,但没有成功,我只能下载登录页面。

这是我目前用于下载数据的代码(这是我最近的尝试,使用特殊标题):

string agent = "AGENT"; //Not real name, it's just confidential
WebClient client = new WebClient();
client.Headers["HTTP_USER_AGENT"] = agent;
client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompletedEvtHdl);
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressChangedEvtHdl);
if (!Directory.Exists(toSavePath))
{
   Directory.CreateDirectory(toSavePath);
}
 if (File.Exists(toSavePath + filename))
{
   File.Delete(toSavePath + filename);
}
client.DownloadFileAsync(new Uri(url), toSavePath + filename);

登录页面非常简单,它只会向登录按钮发出单击事件,以检查web.config中的用户和密码是否相同。如果为true,则必须重定向页面,否则出错。

那么,最好的方法是什么?有没有办法配置IIS7跳过该特殊用户代理或其他一些自定义标头的身份验证?或者我的方向错了?

提前致谢!

1 个答案:

答案 0 :(得分:0)

你想要做的是写一个HttpModule(或使用global.asax)来挂钩AuthorizeRequest事件。

在此阶段,您可以验证允许用户绕过登录的任何内容,然后您可以设置

context.SkipAuthorization = true

http://csharpdotnetfreak.blogspot.com/2009/04/aspnet-bypass-forms-authentication.html