2009-11-18 1 views
0

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

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

ответ

0

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

0

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

0

В 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