10
votes

Comment s'authentifier manuellement après avoir obtenu l'utilisateur Django?

IM Ecrire une application Facebook-Connect qui connecte l'utilisateur après authentification de session sur Facebook, la question est de savoir comment puis-je authentifier l'utilisateur sur Django après avoir obtenu l'objet utilisateur? xxx

existe une autre façon d'y parvenir?


0 commentaires

3 Réponses :


1
votes

authentifier () et login () chacun fournit différentes tâches, et les deux (ou l'équivalent tiré du code Django et mis à jour pour chaque version de Django ) sont nécessaires pour enregistrer un utilisateur dans.


0 commentaires

4
votes

Il y a deux choses que vous devriez examiner et être consciente de votre question et de votre exemple.

Tout d'abord, la façon dont vous gérez des méthodes d'authentification alternatives (par exemple, Facebook OAuth) sont Backends d'authentification . Vous pouvez regarder djangopackages.com pour des options existantes ou écrire le vôtre. Le (s) backend (s) que vous avez configuré est ce qui définira quels paramètres authentifier () s'attendent à recevoir (par exemple, un backend Facebook ne s'attendrait pas à un mot de passe comme mot de passe n'a pas de sens dans ce contexte ).

Deuxièmement, faire de l'utilisateur.Password ne vous obtiendra pas le mot de passe réel de l'utilisateur. En tant que mesure de sécurité, Django stocke des mots de passe comme hachage à sens unique salé . Cela signifie que, par conception, vous ne pouvez pas déterminer le mot de passe d'un utilisateur en fonction de ce qui est stocké dans la base de données.


0 commentaires

22
votes

Vous n'avez pas vraiment besoin d'authentifier () d'abord si vous faites cela (mais je ne vous ai pas dit!):

user.backend = 'django.contrib.auth.backend.modelbackend'

Connexion (demande, utilisateur)


3 commentaires

Pas que je sache de. Juste Trixie!


Si le seul endroit à vous connecter dans votre application est la vue où vous le faites alors ce n'est pas trop mauvais. Si vous souhaitez que la page de connexion d'administrateur ou toute autre utilisation du système d'authentification Django fonctionne, vous devez utiliser un backend d'authentification.


Connexion (demande, utilisateur, backend = 'django.contrib.auth.backend.modelbackend') fonctionne aussi.