Проверьте, имеет ли пользователь в настоящий момент постоянный authcookie
Мне нужно отредактировать пользовательские данные в AuthCookie FormsAuthentication текущего пользователя. Я не вижу, как узнать, выбрал ли текущий пользователь постоянный файл cookie ( "Remember Me" ).
//user is already logged in...
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username, ispersistant); //how to I determine 'ispersistant'?
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value);
FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, NEWuserdata);
authCookie.Value = FormsAuthentication.Encrypt(newTicket);
HttpContext.Current.Response.SetCookie(authCookie);
У кого-нибудь есть идеи?
Благодаря
Ответы
Ответ 1
Метод FormsAuthentication.GetAuthCookie
создает только новый файл cookie. Это не дает вам ранее сделанный cookie.
На вашей странице входа у вас, вероятно, есть что-то вроде этого:
FormsAuthentication.GetAuthCookie (userID, chkPersistCookie.Checked)
И чтобы узнать, когда пользователь аутентифицирован, вы можете сделать
this.Context.User.Identity.IsAuthenticated
На самом деле я точно не знаю, можно ли вывести тот факт, что пользователь имеет постоянный файл cookie. Одна вещь проверяет файл cookie на срок действия.
В этом question есть пример для чтения файла cookie аутентификации.
Ответ 2
Это должно получить существующие формы auth cookie, изучить билет и указать, является ли он постоянным.
var FormsAuthCookie = Response.Cookies[FormsAuthentication.FormsCookieName];
var ExistingTicket = FormsAuthentication.Decrypt(FormsAuthCookie.Value);
bool IsPersistent = ExistingTicket.IsPersistent;
Ответ 3
Я закончил хранение "isperistant" в свойстве userdata authcookie при входе в систему.