II6基本认证和RouteTable.Routes

时间:2011-07-22 20:26:04

标签: asp.net routing iis-6 url-routing

我有一个在IIS6 / Server 2003实例上运行的ASP.NET 4.0 WebForms站点。站点本身不允许匿名访问,并在用户进入Forms身份验证屏幕之前使用IIS基本身份验证。但是,站点级别下面有两个站点节点,即允许匿名访问的虚拟目录(用于通过其他计算机请求静态映像)。

新请求要求我将这些请求路由到不同的页面并检查所请求的URL并执行不同的任务。我在Global.asax文件中使用MapPageRoute方法,并通过使用web.config设置<allow users="*" />的Forms身份验证清除路由。显然,这在本地工作得很好,但是当部署到IIS6机器时,基本身份验证会在请求被路由之前启动。

是否有一种很好的方法可以在IIS6中“伪造”或创建虚拟目录节点并授予其匿名访问权限,以便路由网址请求可以执行?

1 个答案:

答案 0 :(得分:0)

这可能对每个人都不起作用,但因为在我的情况下,HTTP身份验证主要是为了防止人们在登录页面上多次尝试,我实际上从站点和所有虚拟目录节点中删除了基本身份验证。

然后我将它添加到正在使用的〜/ [loginpage]中。由于表单身份验证正在使用中,所有未经身份验证的用户都会重定向到登录页面,然后获得基本身份验证。由于路由页面请求需要公开,我只是将其作为Web.config的例外添加。路由值必须满足非常严格的标准,甚至可以由页面逻辑执行,其他所有内容都由处理程序返回为404。

显然这意味着asp.net dll在IIS基本安全性之前执行,当请求被重定向到登录页面时,但在这种情况下我觉得它很好。