Обновление сеанса другого пользователя в CakePHP - PullRequest
1 голос
/ 15 февраля 2011

Вот мой сценарий CakePHP.

У меня есть контроллер MembersController, который обрабатывает всю пользовательскую информацию, а также поддерживает функции login() и logout().Сотрудники имеют возможность редактировать пользователей с помощью функции edit.Однако, когда сотрудник редактирует пользователя, его сеанс не обновляется.

Я ищу какую-то функцию для входа в AppController, которая сравнивает сеанс пользователей с соответствующей записью в базе данных.Если есть несоответствие (т. Е. База данных была обновлена), я бы хотел обновить сеанс пользователя.

Я видел много решений, которые работают, когда пользователь редактирует свои данные, но не когдасотрудник редактирует данные других пользователей.

Большое спасибо за вашу помощь!

Ответы [ 2 ]

6 голосов
/ 15 февраля 2011

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

function _updateUserSession() {
    if ($this->Auth->user()) {
        $user_id = $this->Auth->user($this->User->primaryKey);
        $user    = $this->User->read(null, $user_id);
        $this->Session->write($this->Auth->sessionKey, $user[$this->User->alias]);
    }
}

Это проверяет, что пользователь вошел в систему, а затем получает его идентификатор (, на который ссылается primaryKey), а затем запрашивает соответствующую запись User из базы данных. Получив запись, он записывает эту информацию в Session в том месте, которое ожидает AuthComponent.

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

если вы используете базу данных, вы можете удалить сеанс пользователя.просто создайте бэкэнд для всех текущих сессий.я использую «online_activities», которые подключены к сеансу для отслеживания идентификатора пользователя.

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

...