Я пытаюсь использовать идентификацию с аутентификацией cookie в приложении asp.netcore 2.0 MVC.Я хочу установить время ожидания сеанса около 150 дней, чтобы пользователям, которые входят в систему, не приходилось снова входить в систему в течение большого периода времени.Я установил options.ExpireTimeSpan = TimeSpan.FromDays(150);
, но сессии закрываются через несколько минут, даже если пользователь активно использует приложение.
Я следую официальным документам, и у меня есть это на моем Startup.cs:
Внутри ConfigureServices
метод:
services.AddIdentity<User, Role>()
.AddDefaultTokenProviders();
// Identity Services
services.AddTransient<IUserStore<User>, UserService>();
services.AddTransient<IRoleStore<Role>, RoleService>();
services.Configure<IdentityOptions>(options =>
{
// Password settings
options.Password.RequireDigit = false;
options.Password.RequiredLength = 8;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequireUppercase = false;
options.Password.RequireLowercase = false;
options.Password.RequiredUniqueChars = 3;
// Lockout settings
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
options.Lockout.MaxFailedAccessAttempts = 10;
options.Lockout.AllowedForNewUsers = true;
// User settings
options.User.RequireUniqueEmail = true;
});
services.ConfigureApplicationCookie(options =>
{
// Cookie settings
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromDays(150);
options.LoginPath = "/User/Login";
options.LogoutPath = "/User/Logout";
options.AccessDeniedPath = "/User/AccessDenied";
options.SlidingExpiration = true;
});
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
В методе Configure
я вызываю app.UseAuthentication();
И для входа в систему я делаю:
var result = await _signInManager.PasswordSignInAsync(email, password, isPersistent: true, lockoutOnFailure: false);
Мне не хватает какой-либо конфигурации?Я полагаю, что я устанавливаю срок истечения 150 дней.
Заранее спасибо.
РЕДАКТИРОВАТЬ: * Похоже, что проблема заключается в ValidationInterval.Я обнаружил эту проблему: https://github.com/aspnet/Identity/issues/1513
Я попытался установить значение ValidationInterval на большое значение, и теперь сеансы не закрываются, и пользователи не выходят из системы неожиданно.Вот код для установки интервала:
services.Configure<SecurityStampValidatorOptions>(options =>
options.ValidationInterval = TimeSpan.FromDays(150));
Полагаю, мне нужно будет посмотреть, как работает средство проверки штампов безопасности, и правильно определить интервал проверки, чтобы сеансы не неожиданно закрывались, но также являлись модификацией.в привилегиях пользователя не игнорируется из-за устаревшего cookie.