Comment puis-je obtenir le mot de passe dans django?
J'ai une bibliothèque python qui j'ai écrit quelque chose d'autre. Donc, je l'importation que pour l'utilisation dans Django, problème, je suis confronté est de savoir comment obtenir le mot de passe.
mycustom_lib_function(username, password)
username
Je peux passer à travers request.user
Mais, je ne suis pas sûr de savoir comment obtenir le mot de passe. Quelqu'un peut-il m'aider? Merci.
OriginalL'auteur user1012451 | 2012-03-05
Vous devez vous connecter pour publier un commentaire.
Votre fonction
mycustom_lib_function
ne doit pas être l'aide d'un mot de passe en clair. Après qu'un utilisateur s'authentifie auprès de votre application, vous avez unUser
objet (à partir dedjango.contrib.auth.models
) qui contient un mot de passe haché:Le mot de passe tapé dans votre formulaire n'est pas stocké en clair dans le texte, en tant que norme de sécurité web vous conseille de ne pas stocker en clair les valeurs de mots de passe après l'authentification.
Notez que vous pouvez cocher la case ci-dessus de hachage en effectuant:
Maintenant, si votre application encapsule dans une autre application que vous n'avez pas le contrôle qui a besoin d'un mot de passe pour faire certaines actions, vous pouvez éventuellement envisager de stocker leurs mots de passe en clair dans le texte (ou un peu mieux de le chiffrer), mais
django.contrib.auth
va pas le faire pour vous. Il serait mieux si vous configurez un OAuth type d'informations d'identification du système, qui fait exactement cette fonctionnalité, sans recourir à des utilisateurs de révéler leur mot de passe pour le site intermédiaire.Si c'est une application que vous ne le contrôle, je laisserais tomber l'exigence d'un mot de passe pour être transmis.
Eh bien, j'ai conçu la bibliothèque. Donc maintenant je prendre le nom d'utilisateur et un mot de passe sont en clair, comme vous l'avez observé. Mais je ne pense pas que je peut passer dans le hachage dans ces dépôts distants pour s'authentifier.
Oui, vous ne pouvez pas déchiffrer " un hachage de mot de passe par le biais de django. (Une table de hachage est une fonction vraiment pas de chiffrement). Vous pourriez peut-être sauver le mot de passe de l'utilisateur en clair dans la base de données, lors de la création d'un compte d'utilisateur. Voir: stackoverflow.com/questions/44109/... Vous devez faire très clairement aux utilisateurs de stocker leurs mots de passe en clair dans le texte. Une autre possibilité est de garder une trace de qui a des autorisations à l'intérieur de votre application, et de créer un compte pour l'utilisateur
django
dans le git/hg repos qui n'actions de l'utilisateur.Grâce jimbob. Nous sommes d'accord qu'à un certain moment, nous n'avons pour le soutien OAUth et OpenID. Au moment où nous venons d'étendre l'Utilisateur de la classe, avec un petit personnalisée la fonction, qui renvoie les informations de connexion (passer en demande.l'utilisateur, vérifier si elle a la permission d'appeler notre coutume lib, et, dans l'affirmative, donnez un titre mondial). Merci.
OriginalL'auteur dr jimbob
Le mot de passe dans
User
est haché, et donc vous ne pouvez pas l'obtenir. Demander à l'utilisateur.Merci. Vous dites que les utilisateurs doivent entrer manuellement le mot de passe? J'ai regardé
User
API, et pas tout à fait sûr de savoir comment je peux obtenir ce travers.Je voulais dire exactement ce que j'ai écrit.
Merci. Mais je ne peux pas demander de mot de passe tout le temps. Cette fonction est utilisée pour certains événements de clic. Donc, le fait d'avoir à entrer le mot de passe 100 fois pour chacune des 100 demandes avant de cliquer est assez ... fou.
OriginalL'auteur Ignacio Vazquez-Abrams
Vous techniquement pouvez stocker le mot de passe en texte brut, mais ses pas le droit de la sécurité stand poit, voir cette réponse, il est fortement déconseillé! django.contrib.auth.hashers a quelques bons outils à utiliser pour les mots de passe, voir l'officiel de Django docs.
Si vous avez une idée de ce que le texte brut mot de passe peut être, c'est à dire que j'ai globalement stockées mot de passe par défaut dans l'une de mes applications qui est stocké en texte brut, comme dans l'exemple ci-dessous. Pour vérifier si un utilisateur dispose de son mot de passe défini par défaut, vous pouvez utiliser le check_password fonction qui renvoie True si le texte brut correspond à l'encodage du mot de passe:
Voir aussi is_password_usable, et make_password fonctions.
OriginalL'auteur radtek