7
votes

Django: demande.utilisateur non définie après la redirection

Spécifiquement, après authentification et redirection, request.User est un utilisateur anonyme.

Connexion (fonction de la vue) p> xxx pré>

dans la vue Index, j'ai supprimé le décorateur login_required et testé la requête.User objet P>

def login(request):
if request.method == 'POST':
    form = LoginForm(request.POST) # Not shown in this example

    if form.is_valid():
        Login(request, form.get_user())
        str = reverse('cm_base.views.index')
        return index(request)
    else:
            # Their password / email combination must have been incorrect
        pass

else:
    form = LoginForm()


8 commentaires

Ajoutez toute votre logique de vue, il n'y a aucun moyen de dire à quoi ressemblez votre formulaire et votre méthode de connexion de l'extrait que vous avez affiché.


Est-ce que demande.user.is_authenciated () renvoie true dans la vue de connexion après l'authentification de l'utilisateur?


Pourriez-vous partager avec nous votre formulaire et votre affichage de connexion dans un snippet Pastebin.com? Merci.


Est-ce que la connexion dans Django-admin travaille?


@Rohan Oui, il fait dans le cadre de la fonction de visualisation de connexion. Une fois que le contrôle quitte cette portée, request.User revient à un utilisateur anonyme.


@AutoDidacticon, je l'ai eu aussi. Travailler sur le correctif maintenant.


@AutoDidacticon J'ai eu le même problème.


J'ai aussi rencontré ce problème. Dans mon cas, c'était une erreur concernant les options session_cookie_domain et Server_Name dans Paramètres.py. Par exemple, si Server_Name est "A.B.C", Session_CokKie_Domaine doit être "B.C". Veuillez vous soucier de la configuration de votre serveur Web si vous en avez un, comme Nginx / Apache, il existe également des options sur le nom du serveur.


3 Réponses :


1
votes

Quel backend d'authentification utilisez-vous? S'il s'agit d'une autre chose que la méthodebackend, assurez-vous que votre méthode get_user est correcte. Il sonne comme si le middleware authentifiant émet un identifiant différent (comme le PK au lieu d'un nom d'utilisateur) que celui que vous recherchez dans votre méthode get_user.


1 commentaires

Cette réponse a fonctionné me former. Dans ma méthode get_user, j'utilisais un email tandis que PK était envoyé par Django. Lorsque j'ai changé la recherche sur pk = user_id cela a fonctionné.



-1
votes

C'était le correctif

<link rel="icon" href="{{ STATIC_URL }}img/favicon.ico" />


0 commentaires

4
votes

Beaucoup de choses se passent ici qui ne devraient pas être. Premièrement, vous n'avez pas besoin de passer demande.user , sa disponibilité par défaut aussi longtemps que vous utilisez requierContext , que vous êtes.

login () cette méthode, qu'est-ce que c'est exactement? Django fournit un intégré login méthode que vous devriez utiliser si vous utilisez le backend d'authentification par défaut.

Vous ne vérifiez pas non plus si un utilisateur est activé ou désactivé.

Voici une version différente de votre code, adaptée à partir du Exemple dans la documentation : xxx


0 commentaires