Уничтожить сеанс CakePHP при закрытии браузера - PullRequest
2 голосов
/ 28 октября 2010

Мне нужно поддерживать Security.level на среднем уровне по причине Ajax. Но я хочу, чтобы, если пользователь закрыл браузер, его сеанс разрушился. Как я могу это сделать?

Заранее спасибо!

Ответы [ 5 ]

6 голосов
/ 10 сентября 2013

Config / core.php

Configure::write('Session', array(
    'defaults' => 'php',
    'cookieTimeout' => 0,   //Lives until the browser is closed.
    'checkAgent'  => false  //To fix a little the Chrome Frame problem
));
4 голосов
/ 28 октября 2010

Если вы не сохраняете данные сеанса (т.е. сохраняете данные сеанса в файле cookie с датой истечения в будущем), то сеанс должен быть уничтожен, когда пользователь закрывает браузер.Я не знаком с платформой CakePHP, поэтому я не могу комментировать его API.Однако, если вы хотите явно завершить сеанс, вы можете сделать это в PHP с помощью session_destroy().

Надеюсь, что это поможет.

1 голос
/ 28 октября 2010

Вы можете удалить cookie-файл сеанса с JS, когда страница закрыта (помните: закрытие страницы также запускается, когда пользователь просто уходит - возможно, просто на следующую вашу страницу).

0 голосов
/ 30 октября 2010

http://book.cakephp.org/view/1317/destroy для CakePHP - но да, CakePHP действительно устанавливает надлежащий cookie-файл сеанса, который удаляется браузером при закрытии.

Что вас действительно беспокоит, так это перехват сеанса -так что вы действительно хотите выйти из системы при закрытии сайта.Вы не можете сделать это - лучший альтернативный метод, который я знаю:

  • Короткий тайм-аут сеанса с "Вы там?"Обновление AJAX - время ожидания можно контролировать независимо от уровня безопасности, теперь используя Configure::write('Session.timeout', $seconds);, где для среднего уровня безопасности секунды времени ожидания умножаются на 100. Банки используют этот метод.
0 голосов
/ 28 октября 2010

Полагаю, вы можете запустить команду ajax на странице разгрузки, чтобы вызвать session_destroy ()

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