ASP.NET MVC Urls和IIS集成Windows身份验证

时间:2009-06-17 13:31:24

标签: asp.net asp.net-mvc iis windows-authentication

我有一个完全支持Forms身份验证的ASP.NET MVC应用程序。但是有一组路由(/ report /%)我需要强制集成Windows身份验证,因为这些页面需要模拟当前用户(出于安全原因)。

如果我将整个站点设置为集成的Windows身份验证,这一切都有效,除了firefox在用户访问站点主页时提示用户输入两次用户名/密码(一次用于Windows身份验证,然后再用于表单身份验证),而IE仅提示进行表单身份验证。这很好,我知道这是Firefox的默认行为,但是为了不让用户高兴,我被要求将Windows身份验证要求限制为仅限于站点的/ report / *部分,因此只有在提示时才会出现提示他们去/ report /%.

中的任何页面

在ASP.NET WebForms中,这很容易,因为有一个physcial / report文件夹可以放置身份验证配置,但在MVC中这个URL是虚拟的,所以我不能这样做。有谁知道这样做的好方法?我试图创建一个“网关”aspx页面,用户在重定向到相应的报告页面之前需要首先完成,虽然Firefox确实在正确的位置提示用户输入他们的Windows凭据,但它似乎并没有保留将后续请求的详细信息发送到任何/ report /%页面。有任何想法吗?非常感激!

1 个答案:

答案 0 :(得分:5)

就在最近,我不得不做类似的事情。我的大部分asp.net MVC应用程序都需要表单身份验证,其中一部分需要Windows身份验证。

我最终做的是将我的网络应用程序拆分为两个项目。

第一个项目托管在IIS下的网站根目录中。这是运行表单身份验证。

第二个项目作为同一网站的虚拟目录托管。这是运行Windows身份验证。

唯一的权衡是你可能会得到/ reports / reports /%的URL(或者你命名的虚拟目录)