/ / cakephp / ne stocke pas toutes les données de l'utilisateur en session avec authComponent - session, cakephp, authentification, composants

cakephp / ne stocke pas toutes les données de l'utilisateur en session avec authComponent - session, cakephp, authentification, composants

Je suis nouveau sur Cakephp et je construis mon premier projet avec la toute nouvelle version 2.1.

J'utilise des composants d'authentification et de session pour construire un système de connexion simple. Tout fonctionne bien. J'utilise une autorisation de formulaire, avec le champ demandé personnalisé pour utiliser le courrier électronique comme identifiant.

Quand j'essaye

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

Je peux voir toutes mes données utilisateur stockées dans la session,mais je n’ai pas besoin de tous les éléments ici. Bien sûr, je peux réécrire la session avec seulement le sous-ensemble de données dont j’ai besoin, ma session est stockée sur memecache et je ne peux pas perdre de mémoire.

Je veux pouvoir mettre à jour cakephp facilement, je préfère donc ne pas réécrire des parties de composants de cakephp.

Je cherche une solution me permettant de spécifier les champs dont j'ai besoin dans la session.

Réponses:

4 pour la réponse № 1

Vous pouvez écrire votre propre composant auth comme ceci:

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();
}
}

puis écrivez quelque chose comme ceci dans le contrôleur:

$this->MyAuth->storeFields = array("email", "name", "dob");