Как правильно обрабатывать билет проверки подлинности с помощью форм при использовании сеанса без файлов cookie

Я почти уверен, что у меня нет уникальной проблемы, но я искал по всему Google и этому сайту, и я не нашел надежного ответа на то, что я ищу. Поэтому я хотел объяснить, могу ли я получить какую-либо помощь по этому вопросу:

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

пример
Боб, пользователь мог инициировать длительный процесс в окне A, и для продолжения работы Боб откроет окно B, которое порождает новый сеанс. Это необходимо для того, чтобы не мешать тому, что происходит в окне А. Каждый раз, когда Боб открывает новое окно, он должен снова войти в систему.

Эта проблема
Я не совсем уверен, является ли это реальной проблемой или нет, поэтому у меня причина спросить. Проблема, которую, как мне кажется, я обнаружил, заключается в том, что при каждом входе в систему Боба текущий билет проверки подлинности с помощью форм (и файл cookie) перезаписываются. Теперь я не понимаю, как это нормально, или почему предыдущая комбинация Session/Window остается в силе после того, как Боб вошел во второй раз. Поскольку заявка была перезаписана, не означает ли это, что первая комбинация Session/Window должна закончиться, потому что заявка больше не действительна? Это в отношении:

Request.IsAuthenticated //Making sure the supplied ticket is valid

Вопросы
Итак, поскольку Билет (и Cookie) проверки подлинности с помощью форм перезаписан, что это значит?

  • Должен ли я быть обеспокоен тем, что билет (и Cookie) перезаписаны?
  • Следует ли при входе в систему перехватывать билет (если есть) и проверять его срок действия? Если он не истек, я должен попытаться продлить билет или просто сделать новый?

    FormsAuthentication.RenewTicketIfOld(ticket) //Just an example
    
  • Если я использую сеанс без файлов cookie, должен ли я использовать только проверку подлинности форм без файлов cookie? Смысл этого в том, чтобы сделать каждый сеанс / окно на 100% независимыми друг от друга. Переписывания больше не будет. Есть ли обратная связь с этим? Я не могу думать ни о чем.

PS: я знаю, что cookie - это просто контейнер для того, что в нем хранится, например пара Key Value.

Дополнительная информация...

Билет аутентификации форм:
IsPersistent установлен в true
Версия билета 2

Формы Cookie:
Key = FormsCookieName (из тега web.config)
Значение = хэшированный билет

Web.Config:

<sessionState 
    cookieless="true" 
    mode="SQLServer" 
    sqlConnectionString="..." 
    timeout="300" 
regenerateExpiredSessionId="true" />

<forms name="FormsCookieName" 
    path="../" 
    loginUrl="Login.aspx" 
    protection="All" 
    timeout="300"
    slidingExpiration="true" >
</forms>

0 ответов

Другие вопросы по тегам