J'ai réussi à faire fonctionner django_openid_auth dans mon projet django, et je peux maintenant me connecter avec mon compte Google. Ce que je n'arrive pas à comprendre, c'est comment se déconnecter. La méthode standard django.contrib.auth.views.logout
déconnectera l'utilisateur, mais la visite ultérieure d'une page nécessitant une authentification authentifiera à nouveau l'utilisateur sans demande. Comment puis-je déconnecter complètement l'utilisateur ?
Réponse
Trop de publicités?L'un des objectifs d'OpenId est de simplifier le processus de connexion. Le comportement que vous rencontrez est tout à fait correct. . La première fois que vous vous êtes connecté à votre application avec votre compte Google, vous avez autorisé le fournisseur OpenId (Google) à envoyer des données à votre application. Comme les données sont toujours dans la base de données, vous n'avez pas besoin d'être invité à nouveau à autoriser l'accès.
Néanmoins, si vous voulez être invité à nouveau, vous devez effacer manuellement les données de la base de données. Vous pouvez le faire en créant une vue de déconnexion personnalisée ou en utilisant l'infrastructure Signal et en ajoutant ce qui suit :
from django.contrib.auth.signals import user_logged_out
@receiver(user_logged_out)
def clear_openid_data(sender, user,**kwargs):
# wipe out data according to models in django_openid_auth..
à signals.py
Il convient de mentionner que utilisateur_déconnecté est disponible depuis Django 1.3