Класс FormsAuthentication c # - PullRequest
1 голос
/ 18 июня 2009

Если я вызываю FormsAuthentication.SetAuthCookie ("john", true), хранится ли имя пользователя в файле cookie?

То, что я пытаюсь выяснить, - это если время сеанса пользователя истекло, а затем пользователь снова заходит на сайт, Request.IsAuthenticated имеет значение true, но откуда берется имя пользователя?

Ответы [ 3 ]

3 голосов
/ 18 июня 2009

Время ожидания сеанса и время аутентификации - это две разные вещи. Вы можете иметь тайм-аут сеансов без аннулирования аутентификации.

Да, имя пользователя сохраняется в файле cookie аутентификации. Однако он зашифрован.

1 голос
/ 18 июня 2009

Вы можете использовать свой браузер для проверки содержимого ваших файлов cookie. Например, мой файл cookie для стекового потока выглядит так:

F650CE82F53D2C39C8C06B5F26EB34E20FEAC3585035E2A6E9FA30B8ECF5051F4D9C8 ....

Это зашифрованное имя пользователя и, возможно, роли пользователя.

Печенье хорошо, пока вы хотите, чтобы оно было. Он не привязан к сеансу.

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

Вот значения по умолчанию:

<forms loginUrl="Login.aspx"
           protection="All"
           timeout="30"
           name=".ASPXAUTH" 
           path="/"
           requireSSL="false"
           slidingExpiration="true"
           defaultUrl="default.aspx"
           cookieless="UseDeviceProfile"
           enableCrossAppRedirects="false" />
0 голосов
/ 18 июня 2009

На этой странице MSDN он устанавливает билет проверки подлинности на основе файлов cookie или URL-адреса, если CookiesSupported установлено в значение false.

Когда вы устанавливаете второй аргумент как true, cookie сохраняется, поэтому, когда пользователь посещает второй раз (после истечения времени ожидания сеанса), ваше приложение получает cookie с билетом авторизации и, таким образом, получает данные пользователя (как насколько я думаю).

Если вы не хотите, чтобы это происходило, я думаю, что либо установка второго аргумента в false:

FormsAuthentication.SetAuthCookie("john", false);

или явная очистка заявки (и, следовательно, cookie):

FormsAuthentication.SignOut();

будет работать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...