У меня, похоже, есть проблемы с пониманием того, как работают Identity 2.0 и файлы cookie. ASP.NET MVC 5.Пользователь выйдет из системы с 'Запомнить меня'
Что я хочу: Если пользователь входит в систему, и он проверяет флажок «Запомнить меня», я не хочу, чтобы он выходил из системы когда-либо. Но что происходит: пользователь выйдет из системы через определенный промежуток времени.
Функция «Запомнить меня» работает, если пользователь закрывает браузер до перерыва. (Когда он вновь открывает сайт, он по-прежнему регистрируется в.)
Это код, у меня есть для входа в систему:
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// Require the user to have confirmed their email before they can log on.
var user = await UserManager.FindByNameAsync(model.Email);
if (user != null)
{
if (!await UserManager.IsEmailConfirmedAsync(user.Id))
{
await SendEmailConfirmationTokenAsync(user.Id);
ModelState.AddModelError("", "Gelieve eerst je e-mailadres te bevestigen.");
return View(model);
}
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: true);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Ongeldige aanmeldpoging.");
return View(model);
}
}
И это код в Startup.Auth:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
ExpireTimeSpan = TimeSpan.FromMinutes(5),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser, int>(
validateInterval: TimeSpan.FromMinutes(10),
regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager),
getUserIdCallback: (id) => (id.GetUserId<int>()))
}
});
Поэтому я ожидаю, что пользователь не выйдет из системы через 5 минут, потому что флаг isPersistent установлен в функции PasswordSignInAsync.
Thanx для любой помощи.