Как узнать время выхода из системы - PullRequest
2 голосов
/ 21 февраля 2011

Я создал простое приложение cakephp с простой аутентификацией пользователя. Оно работает. У меня проблема, когда пользователь долго простаивает, приложение выходит из системы. Пользователь должен войти в систему, чтобы выполнить действия в приложении.

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

Я ценю любую помощь.

Спасибо.

Ответы [ 4 ]

0 голосов
/ 21 февраля 2011

Да, напишите свой собственный обработчик сеанса и зарегистрируйте время, используя gc и destroy fns

0 голосов
/ 21 февраля 2011

Вы можете установить его в app / config / core.php:

Configure::write('Session.timeout', '120');

Документация объясняет, что эта переменная зависит от уровня безопасности.

0 голосов
/ 21 февраля 2011

Иванка,

То, что написал Тариама, кажется вполне обоснованным. Тем не менее, если вам нужна функция для отображения статуса пользователя другим пользователям, имхо вам придется работать с заданиями cron и оболочками для тортов.

Вам потребуется:

  1. предложение Тариама с отметками времени
  2. Торт shell + cron, выполняемый каждым зарегистрированным пользователем. Как только СЕЙЧАС - lastActionTimeStamp> maxIdleTime, выйдите из системы и сохраните отметку времени.

Добавление второго пункта имеет то преимущество, что другие пользователи не видят вышедшего из системы как присутствующего / активного, как это может быть в случае, если вы будете придерживаться только одного.

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

Мои 2 цента.

0 голосов
/ 21 февраля 2011

На вашем сервере / в приложении будет параметр конфигурации, который определяет период простоя, после которого пользователь выходит из системы. С этим знанием (я уверен, что вы знаете, где искать) вы можете сделать следующее

$time_span_to_logout_user = 600; // example 10 minutes

Каждый раз, когда пользователь входит в систему и запрашивает одну из страниц вашего сайта, вы просто сохраняете эту метку времени в БД.

Чтобы узнать время выхода из системы, вы просто берете эту метку времени из БД и добавляете $time_span_to_logout_user -> это время выхода пользователя из системы.

...