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

6
我有一个ASP.NET MVC应用程序,完全依赖Forms身份验证。但是,有一组路由(/report/%),我需要强制使用集成的Windows身份验证,因为这些页面需要模拟当前用户(出于安全原因)。
如果我将整个站点设置为集成的Windows身份验证,这一切都可以正常工作,但是Firefox提示用户输入用户名/密码两次,因为他们访问站点主页时会分别提示进行Windows身份验证和Forms身份验证,而IE只提示进行Forms身份验证。这没问题,我知道这是Firefox的默认行为,但是为了不惹恼用户,我被要求将Windows身份验证要求限制在站点的/report/*部分,这样他们只有在访问/report/%中的任何页面时才会提示。
在ASP.NET WebForms中,这很容易,因为有一个物理的/report文件夹来放置身份验证配置,但在MVC中,此URL是虚拟的,因此我无法这样做。有人知道好的方法吗?我已经尝试创建一个“网关”aspx页面,用户需要先通过该页面才能重定向到适当的报告页面,虽然Firefox确实在正确的时候提示用户输入Windows凭据,但它似乎无法在随后的请求中继续发送这些详细信息到任何/report/%页面。有什么想法吗?非常感激!
1个回答

5

最近我也需要做类似的事情。我的asp.net MVC应用程序大部分需要Forms身份验证,但有一部分需要Windows身份验证。

我最终的解决方案是将我的Web应用程序拆分为两个项目。

第一个项目托管在IIS下的Web站点根目录中。这个项目运行Forms身份验证。

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

唯一的缺点是可能会导致URL为/reports/reports/%(或您命名的虚拟目录名称)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接