Сеансовые куки-файлы в браузерных процессах - PullRequest
0 голосов
/ 19 ноября 2009

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

На данный момент выясняется, открывает ли пользователь новое окно или вкладку, поскольку он находится в том же процессе.

Ответы [ 3 ]

0 голосов
/ 19 ноября 2009

То есть вы действительно хотите что-то вроде функции «Запомнить меня на этом компьютере»? Затем вам нужно создать еще один файл cookie с долгим сроком службы, например, один год. В этом файле cookie с определенным и предварительно определенным именем вы должны установить длинную уникальную, трудно угадываемую автоматически генерируемую строку (например, хеш). Вы сохраняете то же значение на стороне сервера в таблице базы данных, что и PK, вместе с идентификатором пользователя (и при необходимости также IP-адрес пользователя в качестве дополнительной защиты и TTL cookie для автоматической очистки). Теперь при каждом запросе проверяйте, есть ли cookie, и выполняйте процедуру автоматического входа с идентификатором пользователя, связанным со значением cookie в таблице БД.

0 голосов
/ 12 февраля 2014

В файле Global.asax вашего приложения поставьте этот код

Public Function Session_Start()
{
    HttpCookie myCookie = HttpContext.Current.Request.Cookies["ASP.NET_SessionId"];
    if(myCookie != null)
    {
         myCookie.Expires(3);
    }
}

Это сохранит ваши куки и, следовательно, ваш сеанс будет жив. Если это не решит вашу проблему, то дополнительно установите состояние сеанса в «StateServer» вместо «InProc», который по умолчанию находится в web.config

0 голосов
/ 19 ноября 2009

Срок действия файлов cookie сеанса истекает, как только браузер закрывается (это поведение по умолчанию для файлов cookie сеанса PHP по крайней мере). В Firefox запуск двух процессов с использованием обеих сессий на вашем сайте; в IE этого не произойдет, вероятно, потому что «сессионные» куки не распределяются между процессами. Чтобы преодолеть это, вы можете обработать свой собственный идентификатор сеанса в куки, который не имеет 0 как время истечения, но отметку времени в будущем (скажем, 30 дней вперед). Таким образом, cookie может сохраняться между процессами, но вам придется полагаться на свой собственный идентификатор для обработки информации о сеансе.

...