2009-07-16 4 views
2

Je souhaite créer des utilisateurs django à partir de l'application django, puis confirmer la création de l'utilisateur en lui envoyant un e-mail avec un lien de validation.Django. Confirmation de la création de l'utilisateur par mail

Comment puis-je générer en toute sécurité ce lien à partir de détails de l'utilisateur (je ne veux pas de générer une valeur aléatoire et le stocker dans DB, et je ne veux pas utiliser des modules externes comme Pinax pour cela)

Répondre

4

vous voulez aller prendre django-enregistrement et appeler un fait: http://bitbucket.org/ubernostrum/django-registration/wiki/Home

Ceci est une application simple qui fournit enregistrement utilisateur flexible pour les projets basés sur Django. La configuration par défaut implémente un assez commun flux de travail:

  1. signes de l'utilisateur pour le compte vers le haut. L'utilisateur reçoit un courrier électronique contenant des instructions pour l'activation du compte .
  2. L'utilisateur active et commence à utiliser le site.

Docs sur la façon d'intégrer et de l'utiliser: http://bitbucket.org/ubernostrum/django-registration/src/tip/docs/overview.txt

Il gère la clé reg, délai d'attente et tout traitement pour l'activation d'un compte.

Je l'ai utilisé à quelques reprises avec de légers mods et il est très facile de commencer les tests en utilisant même un compte Gmail pour envoyer à tester.

Ajouter ceci à votre settings.py dans l'application pour tester avec un compte gmail:

EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'YOURPASSWORD' 
EMAIL_PORT = 587 

En outre, les profils de django-est un excellent ajout à ce kit django-inscription: http://bitbucket.org/ubernostrum/django-profiles/wiki/Home

1

Vous pourrait faire quelque chose comme ceci:

from django.utils.hashcompat import sha_constructor 

salt = "secret_salt" 
confirmation_key = sha_constructor(salt + email_address).hexdigest() 

puis d'envoyer confirmation_key dans le cadre de la chaîne de requête dans le lien de validation. Je ne suis pas sûr à quel point ce serait sûr.

Pourquoi voulez-vous le faire sans le db? Jetez un oeil à django-email-confirmation pour la norme (utilise le db) façon d'aborder cela.

Questions connexes