2010-09-28 34 views
0

J'ai quelques problèmes utilisateur invalidant les mots de passe tous les 60 jours sur ma base de données postgres:Postgres la règle d'invalider les mots de passe de l'utilisateur tous les 60 jours

CREATE RULE user_expiration AS ON UPDATE TO users DO INSTEAD UPDATE user SET user_expires = user_expires + '60'

Cela fonctionnera chaque fois que l'utilisateur change mot de passe, mais il fonctionne également chaque fois qu'une mise à jour est émise sur les enregistrements. Comment puis-je m'assurer qu'il ne se met à jour que sur l'événement de changement de mot de passe?

Répondre

1

Un déclencheur est une meilleure solution. À partir de la version 9.0 il a pour column triggers, les déclencheurs qui se déclenchent seulement quand une certaine colonne a été changée. Dans les anciennes versions, vous devez effectuer la vérification dans la fonction, comparez OLD.password et NEW.password avant de décider de mettre à jour la colonne user_expires.

+0

Je suppose que je devrais aussi demander comment pouvons-nous faire en sorte que le mot de passe change? – Woot4Moo

+0

Si vous souhaitez appliquer un nouveau mot de passe, si OLD.password = NEW.password, alors RAISE EXCEPTION dans votre fonction de déclenchement. –

+0

merci 15 caractères – Woot4Moo