В форме входа у меня есть возможность разрешить пользователю щелкнуть флажок «Запомнить меня», который создает новый FormsAuthenticationTicket
, который затем добавляется в файл cookie.
if (_model.RememberMe)
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
_model.Username,
DateTime.Now,
DateTime.Now.AddDays(30),
true,
_model.Username,
FormsAuthentication.FormsCookiePath);
// Encrypt the ticket.
string encTicket = FormsAuthentication.Encrypt(ticket);
// Create the cookie.
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
Который, как мы надеемся, должен быть в браузере клиентов в течение 30 дней, как указано выше.
Тестируя это, я намеренно оставил текущий тайм-аут сеанса всего на минуту.
<sessionState timeout="1"></sessionState>
Итак, через минуту, если пользователь сказал «запомнить меня», я ожидаю, что веб-сайт не должен быть перенаправлен обратно на страницу входа. Однако это так. Это код, который делает это.
// [".ASPXAUTH"] is the cookie name that is created by the FormsAuthenticationTicket`
if (User.Identity.Name == "" && Request.Cookies[".ASPXAUTH"] == null)
{
return RedirectToAction("LogOut", "Login");
}
// the current session hasn't timed out or the remember me cookie is enabled
FormsIdentity id = (FormsIdentity)User.Identity;
FormsAuthenticationTicket ticket = id.Ticket;
Но файл cookie равен NULL.
Я ожидаю, что это недоразумение с моей стороны, поэтому, если кто-нибудь может мне помочь. Я был бы очень признателен.
Спасибо
FormsAuthentication.SignIn
? - person Vsevolod Goloviznin   schedule 23.12.2014FormsAuthentication.SignIn
возможно он устарел - person user3428422   schedule 23.12.2014