Проверьте, имеет ли пользователь в настоящий момент постоянный 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 при входе в систему.