几秒钟后,ASP.NET Core MVC身份丢失登录

时间:2018-07-28 20:20:57

标签: asp.net asp.net-mvc asp.net-core login asp.net-identity

我对ASP.NET Core MVC网站有疑问。

我实现了Identity,在我的本地开发计算机上一切正常。发布后,我开始遇到一个奇怪的问题,即登录用户在几秒钟(或点击)后就注销了。

我确定它始终是同一台服务器来响应请求(不是Web场或负载平衡问题)。这是一个简单的Windows托管。不知道我还能做什么...


编辑2018年7月29日

我刚发现另一件事。用户登录后,我看到两个空的cookie(Identity.ExternalIdentity.TwoFactorUserId),在用户断开连接后,单击几下,它们就会神奇地消失……

另一种怪异的行为:在强制用户断开连接之前的请求中,应用程序滞后了一点,变得更慢,就像正在加载某些东西一样。我真的不知道。

这是我的Startup.cs ConfigureServices

services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<User, Role>().AddEntityFrameworkStores<ApplicationDbContext>().AddErrorDescriber<MultilanguageIdentityErrorDescriber>().AddDefaultTokenProviders();
services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
services.AddTransient<IEmailBusiness, EmailBusiness>();
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddRouting(options => options.LowercaseUrls = true);
services.AddMvc(options => options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute())).SetCompatibilityVersion(CompatibilityVersion.Version_2_1); ;
services.AddOptions().Configure<SmtpOptions>(Configuration.GetSection("Smtp")).Configure<MailerOptions>(Configuration.GetSection("Mailer")).Configure<ShopOptions>(Configuration.GetSection("Shop"));
services.AddMemoryCache();
services.AddSession();
services.Configure<IdentityOptions>(options =>
{
    options.SignIn.RequireConfirmedEmail = true;
    options.Password.RequireDigit = true;
    options.Password.RequiredLength = 8;
    options.Password.RequireNonAlphanumeric = true;
    options.Password.RequireUppercase = true;
    options.Password.RequireLowercase = true;
    options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
    options.Lockout.MaxFailedAccessAttempts = 5;
    options.User.RequireUniqueEmail = true;
});
services.Configure<CookiePolicyOptions>(options =>
{
    options.CheckConsentNeeded = context => true;
    options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.ConfigureApplicationCookie(options =>
{
    options.ExpireTimeSpan = TimeSpan.FromDays(90);
    options.LoginPath = "/account/login";
    options.LogoutPath = "/account/logout";
    options.AccessDeniedPath = "/account/accesso-negato";
});

0 个答案:

没有答案