Автоматический выход из Zend Framework после бездействия

Я работаю над приложением, содержащим несколько вспомогательных приложений, и я хотел бы реализовать автоматический выход из системы после 30 минут бездействия. У меня есть AuthController с действиями входа и выхода, сопоставленными с пользовательскими маршрутами / login и / logout с помощью Bootstrap.php, а также плагин фронт-контроллера, который выглядит следующим образом:

class Plugin_SessionTrack extends Zend_Controller_Plugin_Abstract {

    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {  

        $employeeSession = new Zend_Session_Namespace('employeeSession');
        $employeeSession->setExpirationSeconds(10);

    }
}

Я новичок в PHP и Zend, что именно происходит с сеансом через 10 секунд? Я установил низкий уровень для тестирования. Я бы хотел, чтобы произошло следующее: если время последнего запроса через плагин фронт-контроллера было больше 30 минут назад, уничтожить сеанс, вывести пользователя из системы и перенаправить его на / login.

Ясно, что я не отслеживаю время последнего запроса, но я надеялся, что setExpirationSeconds будет обновляться каждый раз, когда пользователь получает запрос через этот метод preDispatch.

Может быть, нужно использовать куки? Мне не нужно на самом деле инициировать действие выхода из системы, его можно просто обработать в следующий раз, когда пользователь сделает запрос, если они ничего не сделали за последние полчаса, сеанс уничтожается, и они выходят из системы, что означает если я уйду на 45 минут, мой экран по-прежнему будет выглядеть так же, но если я нажму ссылку или попытаюсь отправить форму, которую я создал, он отправит меня на / login. Я могу побеспокоиться о каком-то предупреждении обратного отсчета JS позже.

Редактировать: Вот мой начальный этап, если кто-то захочет его увидеть:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    /**
     * Custom routes:
     * 
     * /login
     * /logout
     */
    protected function _initRoutes()
    {

        $router = Zend_Controller_Front::getInstance()->getRouter();

        $loginRoute = new Zend_Controller_Router_Route('login', array('controller' => 'auth', 'action' => 'login'));

        $logoutRoute = new Zend_Controller_Router_Route('logout', array('controller' => 'auth', 'action' => 'logout'));

        $routesArray = array('login' => $loginRoute, 'logout' => $logoutRoute);

        $router->addRoutes($routesArray);

    }

    protected function _initPlugins()
    {

        $frontController = Zend_Controller_Front::getInstance();
        $frontController->registerPlugin(new Plugin_SessionTrack());

    }
}
9
задан Caley Woods 18 February 2012 в 22:31
поделиться