2009-10-01 2 views
1

Я все еще немного смущен о чем-то около FormsAuthenticationTicket и фактическом контейнере для печенья.Что можно установить в FormsAuthenticationTicket?

  1. Что DateExpiration в FormsAuthenticationTicket() см? Это когда умирает печенье? Это то, как долго пользователь может войти в систему без каких-либо активных действий (т. Е. Тайм-аута)?

  2. <forms loginUrl="~/Account/LogOn" 
         protection="All" 
         timeout="20160" 
         name="test" 
         path="/" 
         requireSSL="false" 
         slidingExpiration="false" 
         defaultUrl="default.aspx" 
         cookieless="UseDeviceProfile" 
         enableCrossAppRedirects="false" /> 
    

    Это то, что находится в моей веб-конфигурации. Теперь, любой из них автоматически устанавливается в файл cookie? Например, могу ли я захватить поле name, что мне нужно, чтобы захватить при создании моего файла cookie?

    HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); 
    

    А как насчет установки protection (независимо от того, что есть), timeout, slidingExpiration, enableCrossAppRedirects, cookieless и т.д.? Я не вижу свойств для их настройки. Они автоматически берутся из webconfig или что?

  3. В чем разница между DateExpiration, установленной в FormsAuthTicket и той, которую вы установили для файла cookie (authCookie.Expires)?

Благодаря

ответ

3
  1. FormsAuthenticationTicket.Expiration это время, при котором билет истекает. Дата/время истечения срока действия билета хранится в зашифрованном билете, поэтому он не зависит от времени истечения срока действия файла cookie. Обратите внимание, что клиент может видеть и изменять дату истечения срока действия cookie, но не должен вмешиваться в зашифрованный билет.

Он контролирует, как долго пользователь может получить доступ к сайту без повторной проверки подлинности.

  1. Значения из web.config используются для создания билета. Вы также можете создать свой собственный билет с любыми значениями, которые вы хотите, зашифровать и сохранить в cookie. Вот пример этого в документации MSDN для класса FormsAuthenticationTicket.

UPDATE

This MSDN article есть информация по этому вопросу. Если для защиты установлено значение «Все» в вашем web.config, то билет шифруется с использованием алгоритма, указанного в элементе machineKey. По умолчанию используются SHA1 и AES в соответствии с this article.

Если вы хотите увидеть незашифрованный билет, вы можете установить защиту = «Нет» в вашем web.config, хотя обычно вы не хотели бы этого делать в производственном приложении.

Вы также можете использовать такой инструмент, как Lutz Reflector, для изучения источников классов FormsAuthentication и FormsAuthenticationTicket, чтобы больше узнать о том, как генерируется билет.

+0

Итак, что произойдет, если вы установите дату истечения срока действия файла cookie короче, чем дату истечения срока действия билета? Значит, он использует значения из web.config по большей части? – chobo2

+0

Я также задавался вопросом, какой метод шифрования используется в любом случае для формAuthentication и где он может быть зажат при желании? Также как вы можете добавить cookie formAuthetnication без его шифрования? Я хотел посмотреть, как бы это выглядело, если бы оно не было encyrpted, но я не могу понять, как tot конвертировать билет в строку, чтобы его можно было добавить в файл cookie. – chobo2

Смежные вопросы