Partage
  • Partager sur Facebook
  • Partager sur Twitter

Soucis identification

Sujet résolu
    25 mars 2019 à 15:40:59

    Bonjour,

    Je bloque depuis plusieurs jours sur mon formulaire de connexion qui ne fonctionne pas.
    J'ai crée un super user en ligne de commande, sa connexion marche.

    Par contre, quand je passe par mon formulaire d'inscription pour créer un user et que j'essaie de me connecter après, ça ne marche pas.
    J'ai ce message d'erreur :
    * Please enter a correct username and password. Note that both fields may be case-sensitive.

    J'utilise Django 2.1.

    Voila mon arborescence :
    MonSite
    ---- urls.py
    ---- views.py
    ---- settings.py
    ---- ...
    User
    ---- static (css)
    ---- templates (registration -> login.html)
    ---- admin.py
    ---- apps.py
    ---- forms.py
    ---- models.py
    ---- tests.py
    ---- urls.py
    ---- views.py

    Voila mon User.models:

    from django.contrib.auth.models import User
    from django.db import models
    
    class Profil(models.Model) :
        user = models.OneToOneField(User, on_delete=models.CASCADE)
        societe = models.CharField(max_length=100)
        adresse = models.CharField(max_length=255)
        cp = models.CharField(max_length=20)
        ville = models.CharField(max_length=60)
        pathlogo = models.CharField(max_length=255)

    Ma méthode qui enregistre un nouveau membre dans mon User.views :

    import sys
    from django.shortcuts import render, loader
    from django.contrib.auth import authenticate, login, logout
    from django.http import HttpResponse, HttpResponseRedirect
    from User.forms import UserForm, ProfilForm
    
    def subscribe(request) :
        fileCss = sys._getframe().f_code.co_name
    
        if request.method == 'POST' :
            formUser = UserForm(request.POST)
            formProfil = ProfilForm(request.POST)
            if formUser.is_valid() and formProfil.is_valid() :
                if (
                    request.POST.get('password') == request.POST.get('passwordConfirm') and 
                    request.POST.get('email') == request.POST.get('emailConfirm')
                ) :
                    user = formUser.save()
                    profil = formProfil.save(commit=False)
    
                    profil.user = user
    
                    formProfil.save()
                    return HttpResponseRedirect('/User/')

    Ma méthode user_login :
    def user_login(request) :
        if request.method == 'POST' :
            form = UserForm(request.POST)
            if form.is_valid() :
                username = request.POST.get('username')
                password = request.POST.get('password')
                user = authenticate(username=username, password=password)
    
                if user :
                    login(request, user)
                    return HttpResponseRedirect('/User/')
        else :
            form = UserForm()
            context = {
                'form': form,
                'test': 'OK'
            }
            return render(request, 'registration/login.html', context)


    Mon fichier User.urls.py

    from django.urls import path, include
    from .views import *
    
    urlpatterns = [
        path('', index),
        path('subscribe/', subscribe),
        path('account/', include('django.contrib.auth.urls')),
        path('account/login/', user_login)
    ]

     
    Mon fichier User/templates/registration/login.html

    {% extends 'indexIntegration.html' %}
    
    {% block content %}
    
    {{ test }}
    
    <form method="POST">
        {% csrf_token %}
        {{ form.as_p }}
    
        <input type="submit" value="Connexion" />
    
    </form>
    {% endblock %}


    Vous avez une idée ?

    Et est-ce que je peux personnaliser un peu ma vue login ? Je ne vois pas du tout comment faire (j'ai une donnée "test" dans mon html que j'aimerais exploiter).

    Si vous avez besoin de plus d'infos demandez-moi.

    Merci d'avance :)

    -
    Edité par Origin91 25 mars 2019 à 15:51:05

    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2019 à 15:52:13

      Pour infos, j'ai résolu le problème. Le problème venait mon inscription. J'avais sauté l'étape du hashage du password.

      Bonne journée.

      • Partager sur Facebook
      • Partager sur Twitter
        26 mars 2019 à 16:16:14

        Tu parles du chiffrement du mot de passe ? Tu as chiffré avec quoi ? Bcrypt ?
        • Partager sur Facebook
        • Partager sur Twitter

        Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
        La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

          26 mars 2019 à 17:04:50

          Je n'ai pas utilisé de fonction spécifique. J'ai juste appelé la méthode set_password() au moment de l'inscription qui s'est chargé de chiffrer lui-même le mot de passe (donc celle par défaut dans Django je pense).
          • Partager sur Facebook
          • Partager sur Twitter

          Soucis identification

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown