我有一个使用 Windows 身份验证的 ASP.NET MVC Intranet 站点。它是使用 Windows 身份验证从 ASP.NET MVC 的默认项目设置的。如果用户未经过身份验证/匿名,我一直在努力寻找有关覆盖默认登录弹出窗口的信息。
默认登录提示:
我在互联网上找到的所有内容都有近 10 年的历史,使用经典的 ASP 或 Web 表单。我找不到任何使用 ASP.NET MVC 的内容。
我想要做的是将用户重定向到登录 View (如果他们是匿名/未经过身份验证)。此外,如果他们自动进行身份验证并以其他用户身份登录,则能够注销。
我遇到的主要问题是我找不到项目中实际身份验证的位置。我检查了 App_Start
、Global.asax
等。我也找不到如何覆盖它。
我知道我缺乏代码,但如果有人对此要求有良好的起点或经验,我将不胜感激。
最佳答案
嗯...不可能使用集成 Windows 身份验证为 IIS 站点实现自定义登录。原因:
- Windows 身份验证在与表单例份验证不同的 TCP/IP 层上工作(如果我没记错的话,是互联网层与应用程序层)。此外,您还需要考虑不同的 Windows 身份验证类型和版本(具有 NTLM 回退功能的不同 Kerberos 版本)。
- Windows 身份验证表单内置于浏览器中
- IIS 网站不能进行混合身份验证(基于 Windows 和基于表单)
但是,有一些解决方法。我能想到两个,例如:
- 实现自定义成员(member)资格提供商,您可以在需要时使用模拟/委托(delegate)机制
- 使用 ADFS 等实现单点登录架构。
关于asp.net-mvc - 如果用户在 ASP.NET MVC 中匿名,则重定向到自定义 Windows 身份验证登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44952013/