Запрос относительно параметра IsPersistant в методе FormAuthentication - PullRequest
0 голосов
/ 27 марта 2012

ASP.NET предоставил следующий метод для создания файла cookie проверки подлинности формы вручную

public FormsAuthenticationTicket(int version, string name, System.DateTime issueDate, System.DateTime expiration, bool isPersistent, string userData, string cookiePath)

Что, если я установлю isPersistent в false и установлю для expiration какое-то большее значение, например, через 1 неделю. Что произойдет в этом случае, когда пользователь закроет свой браузер, он будет аутентифицирован, если снова откроет свой браузер. Насколько я понимаю, установка isPersistant в false (независимо от даты истечения срока действия в этом случае) означает, что пользователи не будут аутентифицированы, как только он закроет свой браузер, и станут анонимными после повторного открытия браузера.

Что означает isPersistant false и действительную дату истечения срока действия одновременно?

Ответы [ 2 ]

0 голосов
/ 27 марта 2012

Используя что-то вроде следующего кода, ваш куки будет сохраняться в течение недели, пока не истечет:

HttpCookie theCookie = FormsAuthentication.GetAuthCookie("theUser", false);

theCookie.Expires = DateTime.Now.AddDays(7);

Response.SetCookie(theCookie);

Единственная разница между «постоянным» cookie и тем, который не является, заключается в том, что для последнего установлен срок действия «Session». Самый простой способ подтвердить это - проверить это. Из моего краткого испытания, он работает без инцидентов.

Класс, на который вы ссылаетесь, в основном используется библиотекой FormsAuthentication , и я считаю, что он не должен быть вашим основным методом достижения ваших целей, если они могут быть доступны с помощью статической функции-члена класса FormsAuthentication, которая предоставляется вам в качестве помощника для доступа ко всем функциям, включенным в библиотеку. Например, класс FormsAuthenticationTicket является выводом FormsAuthentication.Decrypt и предоставит вам информацию о данных, зашифрованных в значении cookie. Это не то, что вы должны использовать для создания файла cookie аутентификации в коде.

EDIT

Относительно того, что это означает, если оба свойства установлены одновременно, это означает, что, учитывая ваш постоянный флаг в зашифрованных данных билета, как только билет теряет свою актуальность, он будет обновляться каждый раз, когда пользователь посещает. FormsAuthentication позвонит по номеру FormsAuthentication.RenewTicketIfOld, чтобы сохранить билет на неопределенный срок. Поведение по умолчанию, когда вы помечаете заявку как постоянную с помощью вспомогательных методов FormsAuthentication.SetAuthCookie или FormsAuthentication.GetAuthCookie, инициализирует зашифрованные данные заявки с истечением, установленным на текущую дату и время создания заявки. Это можно подтвердить, позвонив по номеру FormsAuthentication.GetAuthCookie и позвонив по номеру FormsAuthentication.Decrypt, используя Value свойство HttpCookie, которое вы получили. Если вы проверите свойство Expiration билета, вы обнаружите, что для него установлены текущие дата и время.

0 голосов
/ 27 марта 2012

Данные аутентификации будут включены в каждый запрос / ответ и не будут сохранены в файле cookie.Когда пользователь закрывает и снова открывает браузер, необходима новая аутентификация.

См. Эту ветку для тонны информации: Полное руководство по аутентификации веб-сайтов на основе форм

...