Spécifiquement, après authentification et redirection, request.User est un utilisateur anonyme.
Connexion (fonction de la vue) p> 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()
3 Réponses :
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. P>
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 code> cela a fonctionné.
C'était le correctif
<link rel="icon" href="{{ STATIC_URL }}img/favicon.ico" />
Beaucoup de choses se passent ici qui ne devraient pas être. Premièrement, vous n'avez pas besoin de passer Vous ne vérifiez pas non plus si un utilisateur est activé ou désactivé. P> Voici une version différente de votre code, adaptée à partir du Exemple dans la documentation : p> demande.user code>, sa disponibilité par défaut aussi longtemps que vous utilisez requierContext code>, que vous êtes. login () code> cette méthode, qu'est-ce que c'est exactement? Django fournit un intégré login code> méthode que vous devriez utiliser si vous utilisez le backend d'authentification par défaut. p>
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 () code> 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.