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

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

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

如果我将整个站点设置为集成的 Windows 身份验证,这一切都有效,除了 Firefox 在用户访问站点主页时两次提示用户输入用户名/密码(一次用于 Windows 身份验证,然后再次用于表单例份验证)而 IE 只提示输入表单例份验证。这很好,我知道这是 Firefox 的默认行为,但是为了不打扰用户,我被要求将 Windows 身份验证要求限制在网站的/report/* 部分,因此他们只会在以下情况下收到提示他们转到/report/% 中的任何页面。

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

最佳答案

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

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

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

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

唯一的权衡是您最终可能会得到/reports/reports/% 的 URL(或任何您命名的虚拟目录)

关于ASP.NET MVC Urls 和 IIS 集成 Windows 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1007041/

相关文章:

javascript - 通过 ClientScriptManager 进行事件监听器以进行 map 服务器端脚本编写

asp.net - 有人可以解释一下各种 ASP.NET AJAX 库和工具包的差异、现状和 future 吗?

azure - DevOps 注册脚本错误 : Current() ). IsInRole(...)

c# - 在向导控件的 asp.net 中隐藏代码后面的下一个按钮

c# - 优化 GridView

asp.net - 如何在 ASP.NET MVC 中的 session 中存储数组?

c# - SaveChangesAsync 不更新数据库表中的值

c# - bundle 的 css 链接出现 404 错误

asp.net - COMPILATION debug=false 正在杀死我的 ASP.NET 站点

svn - SVN 文件名中的加号 (+)