ASP.Net 5 身份持久身份验证不工作 IIS 7.5 空闲计时器
ASP.Net 5 Identity Persisted Authentication Not Working IIS 7.5 Idle Timer
我在 MVC6 项目上遇到 "remember me" 样式复选框的问题。我有一个 解决了在我的本地主机上调试的问题,但是在将项目部署到我们的开发环境之后,它仍然迫使我在 20 分钟后重新登录。
20 分钟的时间跨度让我觉得 IIS 配置有误。我将我的应用程序池(配置为 "no managed code")空闲计时器设置为在 1 分钟后进入空闲状态。果然,1分钟后,我又得重新登录了。
这让我相信我的持久身份验证 cookie 在应用程序池回收后不再被接受为有效(即使我的 cookie 配置为不会过期 10 天并且 SecurityStampValidationInterval
设置为10 天零 1 分钟。
我在早期版本的 .NET 中看到过与 web.config 的机器密钥相关的类似内容,但 MVC6 在 web.config 中没有 system.web
部分给我放一把机器钥匙。
我的 .NET5 项目 DNX 是针对完整的 .NET 框架而不是 .NET Core。
编辑
查看@blowdart 的回答以获得更好的解决方案。
对于遇到与我相同问题的任何人,我为此实现的 "fix" 是将 IIS 中的空闲计时器设置为 0,这意味着永远不会超时。
我仍在寻找真正的解决方案,因为某些托管环境可能不允许将空闲计时器设置为 0(通常是共享托管等)。
您如何配置数据保护?对于 IIS 和 DNX,我们不知道以持久方式存储密钥的位置,除非您加载配置文件,这不是默认设置。因此,一旦您的应用程序终止,所有用于签署身份验证 cookie 的密钥都会被丢弃。这不会发生在 IIS Express 中,因为 IIS Express 会加载配置文件。
这里有几个选项。您可以 运行 或 provisioning script on the IIS server to create some registry entries ASP.NET can use, or you can configure data protection to use the file system 如果您想要 运行 多个主机,您会这样做。
我在 MVC6 项目上遇到 "remember me" 样式复选框的问题。我有一个
20 分钟的时间跨度让我觉得 IIS 配置有误。我将我的应用程序池(配置为 "no managed code")空闲计时器设置为在 1 分钟后进入空闲状态。果然,1分钟后,我又得重新登录了。
这让我相信我的持久身份验证 cookie 在应用程序池回收后不再被接受为有效(即使我的 cookie 配置为不会过期 10 天并且 SecurityStampValidationInterval
设置为10 天零 1 分钟。
我在早期版本的 .NET 中看到过与 web.config 的机器密钥相关的类似内容,但 MVC6 在 web.config 中没有 system.web
部分给我放一把机器钥匙。
我的 .NET5 项目 DNX 是针对完整的 .NET 框架而不是 .NET Core。
编辑
查看@blowdart 的回答以获得更好的解决方案。
对于遇到与我相同问题的任何人,我为此实现的 "fix" 是将 IIS 中的空闲计时器设置为 0,这意味着永远不会超时。
我仍在寻找真正的解决方案,因为某些托管环境可能不允许将空闲计时器设置为 0(通常是共享托管等)。
您如何配置数据保护?对于 IIS 和 DNX,我们不知道以持久方式存储密钥的位置,除非您加载配置文件,这不是默认设置。因此,一旦您的应用程序终止,所有用于签署身份验证 cookie 的密钥都会被丢弃。这不会发生在 IIS Express 中,因为 IIS Express 会加载配置文件。
这里有几个选项。您可以 运行 或 provisioning script on the IIS server to create some registry entries ASP.NET can use, or you can configure data protection to use the file system 如果您想要 运行 多个主机,您会这样做。