cakephp / не хранить все пользовательские данные в сеансе при использовании authComponent - PullRequest
0 голосов
/ 18 марта 2012

Я новичок в CakePHP, и строю свой первый проект с новым 2.1.

Я использую компоненты auth и session для создания простой системы входа в систему. Все работает хорошо. Я использую аутентификацию формы с настраиваемым запрошенным полем для использования электронной почты в качестве логина.

Когда я пытаюсь

var_dump($this->Session->read('Auth.User'));

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

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

Я ищу решение, позволяющее указать, какие поля мне нужны в сеансе.

1 Ответ

4 голосов
/ 29 марта 2012

Вы можете написать свой собственный компонент аутентификации следующим образом:

class MyAuthComponent extends AuthComponent {

var $storeFields = array();

protected function cleanupUserData($user) {
    if (empty($this->storeFields)) return $user;

    retrun array_intersect_key($user, array_flip($this->storeFields));
}

    public function login($user = null) {
        $this->_setDefaults();

        if (empty($user)) {
            $user = $this->identify($this->request, $this->response);
        }
        if ($user) {
            $this->Session->renew();
        $user = $this->cleanupUserData($user);
        $this->Session->write(self::$sessionKey, $user);
        }
        return $this->loggedIn();
    }
}

, а затем напишите что-то вроде этого в контроллере:

$this->MyAuth->storeFields = array('email', 'name', 'dob');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...