我对ASP.NET Core MVC网站有疑问。
我实现了Identity,在我的本地开发计算机上一切正常。发布后,我开始遇到一个奇怪的问题,即登录用户在几秒钟(或点击)后就注销了。
我确定它始终是同一台服务器来响应请求(不是Web场或负载平衡问题)。这是一个简单的Windows托管。不知道我还能做什么...
编辑2018年7月29日
我刚发现另一件事。用户登录后,我看到两个空的cookie(Identity.External
和Identity.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";
});