2016-05-03 1 views
1

J'utilise PostgreSQL depuis quelques semaines et je l'ai adoré!Le hachage automatique de mot de passe dans PostgreSQL

J'utilise la crypte() et gen_salt() pour générer les hashs, en l'ajoutant à la requête d'insertion comme ceci:

crypt(:password, gen_salt('bf', 8)) 

De même pour la sélection j'utiliser quelque chose comme:

crypt(:password, u.password) 

Je veux simplifier mon code SQL en automatisant le hachage sur la colonne de mot de passe de la table, au lieu des requêtes SQL ou des fonctions supplémentaires. Pour être plus clair, quand j'insère une ligne dans la table, je veux convertir le hachage/comparer immédiatement.

Y a-t-il un moyen? Et si oui, cela serait-il sage?

+0

mécanismes les plus simples. vous avez une table, et vous stockez un hachage de mot de passe, mais votre question est Sérieusement, qu'entendez-vous par automatisation? Requêtes QL ou fonctions supplémentaires? Que veux-tu accomplir? –

+0

Ouais désolé, vous pourriez avoir raison. Alors ... J'ai une requête qui fonctionne bien. Mais je veux enlever la crypte (: mot de passe, gen_salt ('bf', 8)) de la requête, l'insérer en quelque sorte sur la colonne de la table, donc à chaque fois qu'une valeur est ajoutée, elle est immédiatement hachée et/ou comparée au hash. –

Répondre

1

Je ne commenterai pas le "would that be wise?" une partie de la question (pas parce que je pense que c'est imprudent, mais parce que je ne connais pas assez vos besoins).

Si vous voulez calculer automatiquement une valeur de colonne lors d'une INSERT ou UPDATE, vous avez besoin d'un déclencheur (voir CREATE TRIGGER).

Si vous voulez calculer automatiquement une valeur de colonne dans une commande SELECT, vous avez besoin d'une vue (voir CREATE VIEW).

il existe d'autres façons de réaliser ce que vous demandez, mais triggers et les vues sont probablement les

+0

Merci pour les conseils man, je vais vérifier demain et revenir à vous! –