Accès restreint via un overwrite dispatch

Bonne ou mauvaise idée?

Le problème exposé dans ce sujet a été résolu.

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!

+0 -0

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

+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é ?

+0 -0

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.

+0 -0

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?

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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