Сеансовые файлы cookie в процессах браузера

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

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


person helixia    schedule 18.11.2009    source источник


Ответы (3)


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

person Percutio    schedule 18.11.2009

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

person BalusC    schedule 18.11.2009

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

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

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

person Dikshit Dhawan    schedule 12.02.2014