gpt4 book ai didi

asp.net - .Net Core Cookie 身份验证在 IIS 中托管时不起作用

转载 作者:太空狗 更新时间:2023-10-29 17:23:18 26 4
gpt4 key购买 nike

当独立运行应用程序时(在我的例子中,只是在指定端口上运行的 kestrel 服务器:3001)我可以登录(创建 auth cookie)并毫无问题地使用我的 session 来对我的 API Controller 进行后续调用。但是,一旦我通过 IIS 将应用程序发布到主机,我就可以毫无问题地登录,但是对我的 API Controller 的所有后续请求都无法授权并重定向到登录。

为了演示我的问题,我已将我的应用程序简化为可在此处找到的工作示例:Angular2AspNetCoreStarter

重现:

  1. 克隆 repo
  2. 导航到项目目录cd Angular2AspNetCoreStarter
  3. 安装依赖dotnet restore & npm install
  4. 构建 npm run build
  5. 发布 dotnet 发布
  6. 通过 IIS 托管 Publishing to IIS
  7. 导航到托管站点(在我的例子中是@http://localhost/ng2starter)
  8. 使用任何用户名/密码登录
  9. 打开侧边导航
  10. 点击发送匿名 Ping(注意它有效!我使用 Fiddler 来检查流量)
  11. 点击发送 Ping(注意 401 并重定向到登录)

我检查了日志,我在 kestrel 日志中发现的错误是:CookieAuth 未通过身份验证。失败消息:取消保护票证失败
仅供引用,“CookieAuth”是我在 appsettings.json 文件中定义的方案名称。

最佳答案

我认为问题可能是来自具有相同 cookie 名称的不同“本地主机”应用程序遗留或重叠的 cookie。我在 IIS 中运行了您的示例,并从 ping 中得到了相同的 401 错误,然后在 chrome 中注意到一堆具有相同默认名称的本地主机 cookie

.AspNetCore.CookieAuth

我清除了所有的 cookie,然后再次运行您的示例并得到了“砰”的一声

使用 IISEXPRESS 时创建的 cookie本地主机:端口

当您在仅使用本地主机的 IIS 中运行时,也会出现故障,所以我的猜测是 IISEXPRESS cookie 被发送到 IIS 实例,并且由于您具有临时数据保护,它们将无法解密.

关于asp.net - .Net Core Cookie 身份验证在 IIS 中托管时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41171833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com