, поэтому я работаю над веб-приложением asp.net, и у меня возникают проблемы с выяснением:
1.) Когда файл cookie аутентификации привязан к текущему аутентифицированному пользователю?
2.) Как происходит связывание?
Хотя это работает, я нахожу странным, что (метод входа в систему), доступный через (// POST:/ Account / Login) ни в коем случае не привязывает аутентифицированного пользователя к cookie-файлу после подтверждения того, что пользователь существует в базе данных.
Может кто-нибудь дать простое и понятное объяснение, почему это так !!!После бессонной ночи не нашел никакой хорошей документации
Я использую шаблон по умолчанию [ASP.NET Web Application (.NET Framework)],
Вотнастроить вход в cookie,
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
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>(
validateInterval: TimeSpan.FromMinutes(1),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
},
SlidingExpiration = false,
ExpireTimeSpan = TimeSpan.FromMinutes(2)
});
А вот форма для входа в систему, которая подтверждает и аутентифицирует пользователя без ссылки на cookie
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
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: false);
switch (result) {
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}