【问题标题】:ASP.Net 5 Identity Persisted Authentication Not Working IIS 7.5 Idle TimerASP.Net 5 身份持久身份验证不起作用 IIS 7.5 空闲计时器
【发布时间】:2017-09-20 15:39:24
【问题描述】:

我在 MVC6 项目中遇到了“记住我”样式复选框的问题。我有一个related question here 解决了在我的本地主机上调试的问题,但是在将项目部署到我们的开发环境后,它仍然迫使我在 20 分钟后重新登录。

20 分钟的时间跨度让我觉得 IIS 配置错误。我将我的应用程序池(配置为“无托管代码”)空闲计时器设置为 1 分钟后空闲。果然,1分钟后,我又要重新登录了。

这让我相信,在应用程序池回收后,我的持久身份验证 cookie 不再被接受为有效(即使我的 cookie 配置为不会过期 10 天并且SecurityStampValidationInterval 设置为 10 天和 1分钟。

我在早期版本的 .NET 中看到了与 web.config 的机器密钥相关的类似内容,但 MVC6 在 web.config 中没有 system.web 部分供我放置机器密钥。

我的 .NET5 项目 DNX 的目标是完整的 .NET 框架,而不是 .NET Core。

【问题讨论】:

    标签: c# iis-7.5 asp.net-core asp.net-core-mvc


    【解决方案1】:

    您如何配置数据保护?使用 IIS 和 DNX,我们不知道在哪里以持久方式存储密钥,除非您加载配置文件,这不是默认设置。因此,一旦您的应用程序终止,所有用于签署身份验证 cookie 的密钥都会被丢弃。这在 IIS Express 中不会发生,因为 IIS Express 会加载配置文件。

    这里有几个选项。您可以在 IIS 服务器上运行 provisioning script 来创建一些 ASP.NET 可以使用的注册表项,或者您可以 configure data protection to use the file system 如果您想要运行多个主机,您会这样做。

    【讨论】:

    • 我明白了。我正在研究数据保护,但我无法从文档中找出我需要将其配置为使用文件系统或注册表来使用持久密钥。谢谢您的帮助!我知道 .Net 5 还是比较新的,所以我们都在学习 :)
    • 如果您对我们如何在文档或模板中更好地展示这一点有任何建议,请告诉我。
    • 文档很棒!我被绊倒了,因为我没有建立我需要持久保存到文件系统(或注册表)以允许 Identity 拥有它的持久密钥的 2 + 2 = 4 连接。实际上,答案就在那里,只是我没有看到。我在这个问题上工作了很长时间,我错过了简单的答案:)
    【解决方案2】:

    编辑

    查看@blowdart 的答案以获得更好的解决方案。


    对于遇到与我相同的问题的任何人,我为此实施的“修复”是将 IIS 中的空闲计时器设置为 0,这意味着永远不会超时。

    我仍在寻找真正的解决方案,因为某些托管环境可能不允许将空闲计时器设置为 0(通常是共享托管等)。

    【讨论】:

      猜你喜欢
      • 2011-06-23
      • 2018-02-24
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 2018-04-18
      • 1970-01-01
      相关资源
      最近更新 更多