Как правильно обрабатывать билет проверки подлинности с помощью форм при использовании сеанса без файлов 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>