Обновить Данные Авторизованного Юзера

Всем привет!

Стандартная авторизация через CAuthManager, после авторизации данные юзера хранятся в cookie.

К примеру я в админке меняю данные юзеру, но у него они не обновятся пока он не выйдет и заново не авторизируется.

Вопрос: как сделать чтобы он увидел новые данные?

Либо каждый раз (или иногда) при посещении пользователем страниц сайта обновлять куки, либо (если это какие-то важные изменения) уведомлять его и просить перелогиниться. Вообще вопрос интересный :)

Думаю так же:

если юзер авторизирован то каждый раз при обновлении страницу брать данные из БД.

Может есть метод который отрабатывает каждый раз если юзер залогинен? чтобы в нём обновить данные юзера.

P.S про просьбу перелогиниться это уж полный бред…

В порядке общего бреда:

  • Хранить в сессии, отслеживать пользовательские сессии, в случае чего переписывать.

  • Хранить в кеше, при обновлении пользователя инвалидировать кеш

  • (вообще фанк) Использовать хак с е-тагом

Ну если речь идёт о методах setState()/getState(), то они и так работают с сессией, но с переписыванием будет проблема, если сессии хранятся не в БД.

Можно попробовать унаследовать класс CWebUser, его метод init() вызывается каждый раз при (первом) обращении к Yii::app()->user.

Более простым способом на мой взгляд хранить в сессии или в куки только индентификатор пользователя а все доп данные подтягивать на основе этого идентификатора.

Но если нужен велосипед то конечно лучше всего хранить просто валидность данных в кэше (идентификатор кэша создать на основе идентификатора пользователя) если не валиден то перегрузить данные при редактировании просто удалить кэш.

по поводу переписвания данных сесии счетаю глупой и сложной затей, зачем менять когда можно просто полностью перегрузить и всё правильно встанет.