Accès restreint via un overwrite dispatch

Bonne ou mauvaise idée?

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Jusqu'à maintenant, lorsque je ne voulais pas que les gens non enregistré sur mon site ne puisse accéder a une page je rajouter ce morceau de code sur ma CBV.

1
2
3
@method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(myClass, self).dispatch(*args, **kwargs)

Je ne sais pas si c'était le mieux a faire, mais a ce que j'ai pu voir, cela devrais arrêter tout le monde.

Aujourd'hui je souhaiterai pouvoir laisser passer que certaines personnes connecté en fonction de certaines données en BDD.. Je pensais donc a faire ceci:

1
2
3
4
5
6
7
@method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        [requètes en BDD]
        if(la personne voulu):
            return super(myClass, self).dispatch(*args, **kwargs)
        else:
            return redirect(page d''erreur sur les droit d'accès)

Je pourrais ainsi redirigé les gens non connecté sur l'encart de connexion et les personnes non autorisé sur une explication de leurs droits.

Pourriez vous me dire si c'est la bonne démarche a suivre ou si elle présent un danger?

Merci d'avance!

Édité par Coyote

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source…

+0 -0
Auteur du sujet

Bon, j'ai mis en place la solution et les tests que j'ai effectué on l'air correct. Je pense donc que c'était une des bonne démarche a suivre pour arrivé a cette fin ;)

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source…

+0 -0

Normalement @method_decorator(login_required) fonctionne bien !

Ce ne serait pas un problème d'indentation ?

1
2
3
    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(myClass, self).dispatch(*args, **kwargs)

Sinon, pour gérer tes utilisateurs tu utilises ce qui est proposé par défaut par Django, pas un truc personnalisé ?

Édité par Situphen

Médicament flemmard aux pul(p)sions imprécises. “Don’t wait for the perfect moment. Take the moment and make it perfect.”

+0 -0
Auteur du sujet

Ce ne serait pas un problème d'indentation ?

Situphen

Non-non, je n'avais aucun problème avec le morceau de code que tu vient de donner, il marchait parfaitement. Seulement, je souhaitais maintenant pouvoir les autorisés en fonction de leurs groupes par exemple.

Sinon, pour gérer tes utilisateurs tu utilises ce qui est proposé par défaut par Django, pas un truc personnalisé ?

Situphen

J'utilise bien les utilisateurs de Django par défaut, j'ai préféré faire un nouveau model qui prend en ForeignKey la classe User de Django pour tout ce qui est informations personnel (site web, photo, etc..). Aucun changement dans ce qui concerne ma question donc.

Édité par Sanoc

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source…

+0 -0
Auteur du sujet

Euh oui toutes mes excuses, c'est bien une OneToOne comme préconiser dans la documentation de Django.

Mais la question était vraiment de savoir ou ce faisait les vérification de droit d'accès dans les CBV django. Est-ce bien dans le dispatch comme j'ai fait ou est-ce sujet a un problème majeur?

Édité par Sanoc

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source…

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte