api - 为什么“服务器上的 IIS”的行为与“本地 IIS”和“IIS Express”的行为不同?(ASP.NET Core + Angular + Windows 身份验证)
问题描述
如果我创建一个ASP.NET Core + Angular项目并启用 Windows 身份验证(按照这些说明链接)并使用IIS Expressrunas /user:MY-PC\local-user Chrome.exe
对其进行调试,如果我使用不在 AD 中的本地用户 () 打开浏览器,为什么 Angular 应用程序会加载? IIS Express 不应该要求我提供凭据吗?
如果我使用 Web Deploy 发布到本地 IIS(启用了 Windows 身份验证并安装了 Windows 托管捆绑包),我会得到相同的结果,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”的行为不同?
解决方案
推荐阅读
- c#-4.0 - 如何获取群集磁盘的磁盘空间统计信息
- google-sheets - 运行总计自动插入每 9 行重置一次
- css - 手风琴组的标题样式(ngx-bootstrap)?
- javascript - 无法使用 react-native ble-manager 向 BLE 硬件写入或发送数据 [写入错误状态 3]
- javascript - 如何使用 Google recaptcha v2 和 PHP 提交带有 Boostrap 成功警报的联系表
- javascript - React App - Bable Polyfill 无法正常工作 IE11
- sql-server - 通过连接多个表来扁平化 SQL Server 中的数据
- c# - 我怎样才能使这个自定义全选功能起作用?
- php - 如何在 htaccess 中使用查询字符串重定向特定的 URL
- sql - REST API:隐藏代理键,只向用户公开自然键