Проверьте, есть ли у пользователя, вошедшего в систему, постоянный authcookie - PullRequest
11 голосов
/ 29 октября 2011

Мне нужно отредактировать данные пользователя в FormsAuthentication AuthCookie текущего пользователя, вошедшего в систему. Я не вижу, как узнать, выбрал ли текущий пользователь постоянный файл cookie («Запомнить меня»).

//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);

У кого-нибудь есть идеи? Спасибо

Ответы [ 3 ]

7 голосов
/ 18 июня 2013

Это должно извлечь существующие cookie-файлы форм, проверить тикет и сказать, является ли он постоянным.

        var FormsAuthCookie = Response.Cookies[FormsAuthentication.FormsCookieName];
        var ExistingTicket = FormsAuthentication.Decrypt(FormsAuthCookie.Value);
        bool IsPersistent = ExistingTicket.IsPersistent;
7 голосов
/ 29 октября 2011

Метод FormsAuthentication.GetAuthCookie создает только новый файл cookie.Это не дает вам ранее сделанные куки.

На вашей странице входа у вас, вероятно, есть что-то вроде этого:

FormsAuthentication.GetAuthCookie (userID, chkPersistCookie.Checked)

И чтобы узнать, когда пользователь аутентифицирован, вы можете сделать

this.Context.User.Identity.IsAuthenticated

Я действительно нене знаю наверняка, сможете ли вы сделать вывод, что у пользователя есть постоянный файл cookie аутентификации.Одна вещь проверяет куки на дату истечения срока действия.

В этом вопросе есть пример для чтения куки аутентификации.

2 голосов
/ 01 ноября 2011

Я закончил тем, что сохранил «ispersistant» в свойстве userdata authcookie при входе в систему.

...