ASP. NET Сессия не сохраняется при переходе на другой сайт и обратно? - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть ASP. NET MVC (не Core) веб-приложение, которое использует другой сайт для аутентификации пользователя, что предполагает переход на другой сайт и обратно. Я храню информацию в переменной Session, которую я хочу прочитать после того, как пользователь возвращается на исходный сайт, но сеанс, когда пользователь возвращается, является новым, а не тот, в котором я сохранил информацию.

Почему / как ASP. NET решает начать новый сеанс (или не помнить старый)? Есть ли способ заставить его вести себя так, как я хочу?

1 Ответ

1 голос
/ 15 апреля 2020

Ну, я понял это. Проблема в том, что страница сайта аутентификации выполняет процедуру POST, чтобы вернуться на исходный сайт. ASP. NET сеансовый повар ie имеет SameSite = Lax, поэтому POST для нескольких сайтов не будет отправлять его. Поскольку ASP. NET не видит повара ie, он создает новый сеанс и связанный с ним повар ie, перезаписывая исходный.

Решение (или a *) В любом случае решение 1004 *) - пометить повара ie как SameSite = None и Secure, что я сделал, добавив в свой файл Web.config следующее:

<sessionState cookieSameSite="None" />
<httpCookies requireSSL="true" />

Первая строка делает сеанс cook ie SameSite = Нет, а вторая строка делает всех файлов cookie для защиты.

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