如何解决为什么“服务器上的 IIS”与“本地 IIS”和“IIS Express”的行为不同? ASP.NET Core + Angular + Windows 身份验证
如果我创建一个 ASP.NET Core + Angular 项目并启用 Windows 身份验证(按照这些说明 link)并使用 IIS Express 对其进行调试,为什么如果我使用不在 AD 中的本地用户 (runas /user:MY-PC\local-user Chrome.exe
) 打开浏览器,Angular 应用程序会加载吗? IIS Express 不应该要求我提供凭据吗?
如果我使用 Web 部署发布到本地 IIS(启用了 Windows 身份验证并安装了 Windows Hosting Bundle),我会得到相同的结果,Angular 应用加载并且本地 IIS 不要求提供凭据。我尝试使用 ASP.NET Core API + Angular 拆分项目,但得到了相同的结果。我必须使用某种逻辑实现端点以返回 401(不是网络用户)、403(网络用户,但不在我的 AD 组中)和 Angular 中的 Guard 以避免加载组件以及 401 和 403 页面。
但是,当我在服务器上发布到 IIS 时(手动创建网站并复制文件,并安装了 Windows Hosting Bundle),我意识到行为有所不同,Angular 应用程序未加载并且 IIS 总是要求提供凭据。如果我输入错误的凭据或单击取消,IIS 显示 401。使用正确的凭据我可以访问并且浏览器会记住它们,但是如果我关闭并再次打开浏览器,我需要重新输入我的凭据,这有点烦人。
当我打开普通浏览器(使用我的 AD 帐户)时,IIS Express 和本地 IIS 从不要求我提供凭据。
为什么“服务器上的 IIS”与“本地 IIS”和“IIS Express”的行为不同?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。