IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Django et les sessions


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut Django et les sessions
    Bonjour tout le monde!

    Je débute tout juste avec Django, mais aussi avec les sessions et j'aurais voulu vous demander plusieurs choses. Vous allez voir j'ai un peu de retard par rapport à vous ;-)

    Comment les sessions fonctionnent-elles? Quelles sont les étapes pour mettre en place proprement les sessions sur Django?
    Est-ce que l'authentification est l'obtention d'une session qui protège toutes les pages d'une application? Donc si l'on met 'authentification seulement sur la première plage, ça protège implicitement toues les autres pages? Sans authentification, les autres pages de mon application sont bien protégées? Si non, comment protéger les pages d'une application?
    Par ailleurs, comment dire qu'un utilisateur n'a accès qu'a certaines pages et d'autres non?

    Autre point, avec Django, comment peut-on visualiser la BDD et son contenu/archi?



    Merci d'avance pour vos retours!!!

    Tarnaud

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour et bienvenue sur le forum.

    Comment les sessions fonctionnent-elles?
    Les sessions nécessite un cookie côté navigateur contenant uniquement l'identifiant de la session.
    Côté serveur, les sessions sont enregistrées dans la base de données.
    Il est possible de conserver des données dans la session qui seront serialisées dans la base.

    Quelles sont les étapes pour mettre en place proprement les sessions sur Django?
    Rien, par défaut, les sessions sont activés dans settings.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MIDDLEWARE_CLASSES = (
    ....
    'django.contrib.sessions.middleware.SessionMiddleware',
    Est-ce que l'authentification est l'obtention d'une session qui protège toutes les pages d'une application?
    Non, l'authentification permet à une application de vérifier si un utilisateur est valide, une fois que celui-ci a fourni son nom d'utilisateur et son mot de passe.
    Il est alors authentifié pour la durée de la session.

    Sans authentification, les autres pages de mon application sont bien protégées?
    Non
    Si non, comment protéger les pages d'une application?
    Pour proteger les pages de l'application, il suffit d'ajouter un décorateur devant toutes tes vues a protéger:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from django.contrib.auth.decorators import login_required
     
    @login_required
    def my_view(request):
    Il existe une application qui permet de protéger toutes tes vues :django-private-views
    Par ailleurs, comment dire qu'un utilisateur n'a accès qu'a certaines pages et d'autres non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from django.contrib.auth.decorators import user_passes_test
     
    @user_passes_test(lambda u: u.has_perm('polls.can_vote'))
    def my_view(request):
    cela permet de limiter l'accès aux vues en fonction des permissions des utilisateurs.
    Pour limiter l'accès certains objets, il faut utiliser une application dediée, django-guardian par exemple.

    la doc est très bien faite:

    avec Django, comment peut-on visualiser la BDD et son contenu/archi?
    Pour visualiser les données de la BDD, django propose une application: databrowse.
    peut-on visualiser [...] son archi?
    Tu peux utiliser l'application django-extensions qui permet de génerer l'architecture de la BDD en utilisant graphviz.

    Bon django
    Images attachées Images attachées  

  3. #3
    Membre averti
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut Merci Pacificator!!
    Autres questions, désolé d'abuser :-)
    Concernant l'application : django-private-views
    Comment l'installer? Comment l'appeler? Si j'ajoute cette application, je n'ai plus besoin de faire : @login_required avant mes vues?
    Pareil pour django-guardian, comment l'utiliser, comment la mettre en place?
    Et the same pour django-extensions :-) Qu'est-ce que graphviz (je n'arrive pas à trouver d’exécutable)

    En bref comment fonctionnent les applications! Je débute sur Django, mais je commence à comprendre la puissance du truc....


    Merci infiniment, c'est vraiment super sympa!!!!

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    tu es sous quel os?

  5. #5
    Membre averti
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut Windows Vista
    Sinon besoin d'aide encore
    J'ai mis le code suivant pour tester les sessions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    def save_user(request, username):
    	firstname = request.POST["firstname"]
    	lastname = request.POST["lastname"]
    	mail = request.POST["mail"]
    	password = request.POST['password']
     
    	user = authenticate(username=username, password=password)
    	if user is not None:
    		if user.is_active:
    			login(request, user)
    			return HttpResponseRedirect("/wikicamp/" + username + "/")
    		else:
    			# Return a 'disabled account' error message
    			return HttpResponse('ERROR: DISABLED ACCOUNT')
    	else:
    		# Return an 'invalid login' error message.
    		user = User(username=username, first_name=firstname, last_name=lastname, email=mail, password=password)
    		user.save()
     
    		return HttpResponseRedirect("/test/" + username + "/")
    => Le user.save() me crée des users avec un password en clair : si je l'affiche derrière, j'obtiens le mot de passe lisible....
    Et derrière, lorsque j'essaye de me loguer avec, il tombe sur user à None, =>il tente de me les recréer.
    J'obtiens l'erreur suivant :
    column username is not unique
    Sinon, le seul pour lequel le mdp a l'air de marcher, c'est le superuser que j'avais créé par commande avant.
    Lorsque j'affiche le pwd :sha1$d615f$8679cf1feb911a6474b540d5949c20de9159bd0c
    Pourquoi le message est codé ici (certainement pour ça que le mot de passe arrive à être lu....)

    j'obtiens dans ce cas là aussi un message d'erreur :
    global name 'login' is not defined

    Une idée?

    Merci encore.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 48
    Par défaut
    Pour créer un utilisateur, passe par le manager du modèle User.
    Lien vers la doc de Django.

    Le mot de passe de l'utilisateur DOIT être hashé. En passant directement par User(username=username, password=password, etc...), je pense que le mot de passe n'est pas hashé. Du coup, Django t'envoie chier parce qu'il n'y a pas de correspondance quand tu fais authenticate(blabla), qui hash lui-même la string password que tu lui donnes.
    Et c'est normal qu'il te dise qu'il existe déjà un utilisateur avec cet username, vu qu'il a été crée. Le problème se situe dans la gestion du mot de passe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sécurité] securite avec les sessions.
    Par krapoulos dans le forum Langage
    Réponses: 7
    Dernier message: 05/11/2005, 14h41
  2. Problème avec les sessions
    Par philippef dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2005, 15h19
  3. [Sessions] Les sessions multi-applications
    Par brazza dans le forum Langage
    Réponses: 4
    Dernier message: 13/10/2005, 17h53
  4. les sessions PHP
    Par smh_master dans le forum Langage
    Réponses: 4
    Dernier message: 31/08/2005, 14h13
  5. PB Réseau sur les sessions ouvertes ?
    Par nico___23 dans le forum Développement
    Réponses: 1
    Dernier message: 07/01/2005, 09h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo