Автоматическое хеширование паролей в PostgreSQL

Я использую PostgreSQL последние несколько недель и мне это очень нравится!

Я использую crypt() и gen_salt() для генерации хэшей паролей, добавляя их в запрос на вставку следующим образом:

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

Аналогично для выбора я использую что-то вроде:

crypt(:password, u.password)

Я хочу упростить мой код SQL, автоматизировав хэш столбца пароля таблицы вместо запросов SQL или дополнительных функций.

Чтобы быть более понятным, когда я вставляю строку в таблицу, я хочу, чтобы она немедленно конвертировала хэш / сравнение.

Есть ли способ? И если да, будет ли это мудрым?

1 ответ

Я не буду комментировать "это было бы мудро?" часть вопроса (не потому, что я думаю, что это неразумно, а потому, что я недостаточно знаю о ваших потребностях).

Если вы хотите автоматически вычислить значение столбца во время INSERT или UPDATE, вам нужен триггер (см. CREATE TRIGGER).

Если вы хотите автоматически вычислить значение столбца во время SELECT, вам нужно представление (см. CREATE VIEW).

Есть и другие способы добиться того, что вы просите, но триггеры и представления, вероятно, являются наиболее простыми механизмами.

Другие вопросы по тегам