2015-08-26 2 views
0

J'ai essayé de mettre en œuvre Zend\Authentication en suivant les instructions sur http://framework.zend.com/manual/current/en/modules/zend.authentication.intro.html, mais il me semble qu'il manque une pièce du puzzle.Comment implémenter une classe de stockage d'authentification personnalisée dans ZF2?

J'ai construit un adaptateur personnalisé, et qui fonctionne bien, mais je ne sais pas comment implémenter le stockage personnalisé.

J'ai créé une classe personnalisée qui implémente le StorageInterface, mais je ne peux pas vraiment comprendre ce que je suis censé faire avec les méthodes.

La méthode d'écriture est la seule qui est entrée, ce qui semble être le deuxième paramètre d'un Authentication\Result. Ce que je ne comprends pas, ce sont les données que je suis supposé écrire sur mon stockage (Redis) - le contenu de $contents sera-t-il suffisant? Ne devrais-je pas avoir une sorte de clé ou quelque chose de disponible dans la classe de stockage personnalisée que je peux utiliser pour interroger mon stockage?

Répondre

1

Même si vous écrivez votre propre carte d'authentification, il n'est pas obligatoire de créer un stockage de session personnalisé. Si vous devez modifier le stockage pour ajouter des fonctionnalités, vous pouvez tout simplement étendre l'une des classes Stockage. Par exemple, c'est une classe où je l'ai fait. https://github.com/soliantconsulting/SimpleFM/blob/master/library/Soliant/SimpleFM/ZF2/Authentication/Storage/Session.php

Même si vous avez besoin d'une gestion de session personnalisée, je vous suggère de commencer par utiliser une classe Zend Session Storage existante pour faire fonctionner votre adaptateur Auth. Ensuite, vous pouvez revenir et vous concentrer sur le stockage dans un second passage. J'ai trouvé très instructif de voir comment fonctionnent les classes Zend sous le capot. Regardez également les tests unitaires. Enfin, si cela aide, regardez et mes classes d'authentification SimpleFM, car ce sont des cas d'utilisation simples et agréables. Il y a aussi un exemple simple d'implémentation de l'adaptateur personnalisé via les usines ici https://github.com/soliantconsulting/SimpleFM-skeleton/tree/master/module/SimpleFMAuth/src/SimpleFMAuth/Factory

0

Je réponds à ma propre question avec ce que j'ai imaginé, au cas où cela pourrait aider quelqu'un d'autre dans le futur. Il s'est avéré que la solution était relativement simple. J'avais l'impression qu'il y aurait de la magie, mais ce n'était pas du tout le cas. Ma solution était simplement de stocker toutes mes données de session dans Redis en utilisant une clé hachée, ainsi que de stocker la valeur de la clé hachée dans un cookie pour une récupération facile.

+0

Pas la meilleure approche pour les applications sensibles à la sécurité, au moins assurez-vous d'utiliser un cookie crypté. Personne ne devrait pouvoir extraire des données de la session de quelqu'un d'autre en devinant sa clé de stockage. – umbrel