В форме входа у меня есть возможность разрешить пользователю щелкнуть меня помнить, который создает новый FormsAuthenticationTicket
, который затем добавляется в файл cookie.ASP.MVC Запомнить меня 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.
Я ожидаю, что это будет недоразумение от моего имени, поэтому, если кто-нибудь может дать мне руку. Я буду очень признателен.
Благодаря
Почему вы делаете это вручную и не используете 'FormsAuthenticatio n.SignIn'? –
Потому что я никогда не слышал об этом до сих пор lol – user3428422
И с .NET 4.5 нет 'FormsAuthentication.SignIn', возможно, его устаревшего – user3428422