Класс FormsAuthentication С#

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

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


person Community    schedule 18.06.2009    source источник


Ответы (3)


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

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

person womp    schedule 18.06.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" />
person MatthewMartin    schedule 18.06.2009

На этой странице MSDN он устанавливает билет проверки подлинности форм для файлов cookie или в URL-адресе, если CookiesSupported установить ложь.

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

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

FormsAuthentication.SetAuthCookie("john", false);

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

FormsAuthentication.SignOut();

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

person TheVillageIdiot    schedule 18.06.2009