我正在使用ASP.Net Core和MS Identity,我试图理解为什么每次部署后登录用户都会注销.

我一直在try 这个方法(设置静态机器键)

<system.web>
    <machineKey validationKey="XXX"
        decryptionKey="XXX"
        validation="SHA1" decryption="AES"/>
</system.web>

然而,问题仍然存在:

  • 用户登录
  • 停车场
  • 起点
  • 用户需要再次登录

但我也这么说:

  • 用户登录
  • 重新启动站点
  • 用户仍在登录

什么会导致用户注销?你知道怎么避免吗?

推荐答案

(解决方案在Chris发表 comments 后分为单独的答案)

我找到了一个解决方案来保持登录状态,它在网站停止/启动和网站源文件夹更新后仍然有效:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDataProtection()
            // This helps surviving a restart: a same app will find back its keys. Just ensure to create the folder.
            .PersistKeysToFileSystem(new DirectoryInfo("\\MyFolder\\keys\\"))
            // This helps surviving a site update: each app has its own store, building the site creates a new app
            .SetApplicationName("MyWebsite")
            .SetDefaultKeyLifetime(TimeSpan.FromDays(90));
}

有了这些附加行和机器密钥集,在站点停止/启动和IIS服务器重新启动之后,如果重新构建站点,登录数据将保持不变.

更多信息:https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview

Just Serega提出的更多建议: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/advanced?view=aspnetcore-6.0#data-protection

Asp.net相关问答推荐

更新剃须刀页面中图表的值

属性包含破折号的 ServiceStack 请求对象?

我可以强制刷新我的样式表文件吗?

是否可以发布 ASP.NET 5 应用程序以使目标机器不需要安装 DNX?

RNGCryptoServiceProvider - 随机数审核

IIS 中的嵌套 ASP.NET应用程序继承父配置值?

我可以在 Visual Studio 2010 中将任务列表项添加到 csHTML 吗?

如何使图像的一部分成为可点击的链接

stream.CopyTo - 文件为空.网

为什么 Asp.Net Identity IdentityDbContext 是一个黑盒?

ASP.Net 自定义客户端验证

LINQ to Entities 无法识别 MVC 4 中的System.String ToString()方法

存在 ios 7 虚拟键盘时,div 元素不会停留在底部

IIS Express 安装目录在哪里?

如何从 NuGet 安装 EntityFramework 5.0(和其他旧版本)?

@(at) 登录文件路径/字符串

什么时候应该使用 Response.Redirect(url, true)?

如何强制 netwtonsoft json 序列化程序将 datetime 属性序列化为字符串?

字体真棒里面asp按钮

如何检索 X509Store 中的所有证书