MVC session et sécurité
Salut à toi Emacs !
Ca faisais quelque temps que j'etais pas venu ! mais je garde toujours un oeil sur apprendre-php
plein de bonne ressource et d'inspiration !
Je viens ici à fin d'avoir un avis sur la session dans le MVC suite
à ce que tu m'avais conseiller en terme de session !
je créer ma session comme conseiller dans le constructeur de l'user:
$user = new User(new Session());
j'ai créer dans user une methode logon comme ceci:
public function logon($login, $password) { $this->setLogin($login); $this->setPassword($password); return MYSQLUser::logon($this); }
si mysql trouve pas ça renvoie false sinon l'id de l'user
je voulais savoir dans un souçi de sécurité ou il etait le mieux de mettre l'objet user sachant que
j'en ai besoin par exemple dans la base de donné pour récupérer l'id de l'user pour une session plutôt que de le serializé !
j'ai pensé à le mettre dans la superClass AppController puis faire des methodes dans user pour les droits et je récupèrer ces méthodes en fonction des pages et des liens pour autorisé ou pas l'acces !
Je dois aussi autorisé la session d'entrée sur le site mais sans login pour suivre le visiteur !
j'ai aussi créer une table *user *et *privilèges *avec des niveaux d'accès differents
bref j'aurais besoin qu'on m'eclaire la dessus car je veux proteger aux mieux ma partie backoffice !
Merci ! ++ Vincent
Réponses apportées à cette discussion
Pour moi...:
Je mettrais l'objet $user dans la session php.
Après tu peux créer une classe Context (ou sf m'inspire..)
et dedans une méthode statique getUser() qui retourne l'objet user.
Bonne chance!!
Je connais pas symphony !
Quel est le but de la class Context et quel est l'interet par rapport à la methode précédente ?
je suis pas sur de mettre l'objet user dans l'objet session et les avis sont partagé ! mais peut etre as tu plus d'argument qui me permetrais de mieux comprendre se raisonnement ?
de plus j'aime pas mettre mon objet session en parametre de l'objet user , en Java ça m'aurais pas déranger car on peut faire de la surcharge de methode et constructeur mais la à chaque fois que je dois créer un user je dois le mettre en parametre ! j'aurais préférer dans une methode interne et appeler cette methode dans le constructeur ! enfin je sais pas si c'est la bonne methode
Hello,
La solution de Saturn1 d'utiliser un contexte est une première approche mais elle n'est pas du tout pratique. La classe Context (sfContext dans symfony) est en réalité un singleton qui contient tous les objets du coeur du framework (request, response, user, cache...). C'est donc un gros objet qui contient l'ensemble du contexte chargé pour la requête en cours. Le problème c'est que tous les objets sont chargés alors que l'on en a pas forcément besoin pour la requête en cours. De plus, le singleton rend les objets accessibles de n'importe où (cad dans le modèle, dans la vue, dans les contrôleurs...) ce qui peut s'avérer être une mauvaise pratique. Bref, l'utilisation d'une classe de contexte peut être une solution mais à ton problème mais c'est fortement déconseillé.
L'une des solutions idéales et plus élégante est d'avoir recours à un conteneur d'inversion de dépendance qui permet ainsi de charger les objets à la demande et d'éviter également l'utilisation d'un singleton de contexte. Fabien Potencier, le créateur de Symfony, a récemment développé un composant d'inversion de dépendance entièrement gratuit, testé et documenté que tu peux retrouver sur le site http://components.symfony-project.org/dependency-injection/. Ce site dévoile quelques autres composants utiles comme le composant sfYaml ou bien l'Event Dispatcher. Tous ces composants sont au coeur même du futur symfony 2, qui sera par ailleurs le framework le plus rapide et le plus performant ;)
++
Hugo.
HUm ~~ c'est intéressant!!
Mais il est prévu pour fin 2010 SF 1.2?
Merci
Tu veux dire sf 2 ? ^^
Symfony 2 sortira très certainement en début, voire courant 2010. Fabien prend le temps de le développer pour qu'il soit bien fait. En fait, Fabien commençait à travailler sur Symfony 2 bien avant même la sortie de symfony 1.0.
Hum c'est du lourd !! :p
Une sorte de jobeet est prévue en même temps que la sortie de 2.0?
Je n'en ai aucune idée...
ok merci pour votre aides !
Je vais pas créer d'objet context car en effet ça pourrais etre lourd pour l'appli !
en revanche je penses que la solution pour ma session serai de créer un objet visiteur qui aurrai pour seul but de suivre le visiteur inconnu et un autre objet user qui pourrais se logué, ajouter modifier son compte !
après je vais me debrouillé pour trouver une solution efficace et securiser les lieus de façon optimal !
good day :D