Я использую dbix :: class вместе с катализатором для взаимодействия с моей базой данных. Однако некоторые из данных, которые я храню, чувствительны, поэтому я хотел бы зашифровать их до того, как он войдет в базу данных (вставлен или обновлен) и расшифрует его, когда он выйдет (выбран). И я знаю, как с помощью этого модуля: DBIx::Class::PassphraseColumn
вы можете автоматически иметь зашифрованный пароль при вводе его в базу данных, имея это в файле схемы:dbix :: класс изменить данные столбца перед обновлением или вставить
__PACKAGE__->add_columns(
'+password' => {
passphrase => 'rfc2307',
passphrase_class => 'BlowfishCrypt',
passphrase_args => {
cost => 14,
salt_random => 20,
},
passphrase_check_method => 'check_password',
}
);
Так что в любое время вы обновить пароль у вас нет чтобы беспокоиться о его шифровании, DBIx просто делает это за вас. Был бы аналогичный способ, когда всякий раз, когда я вставил или обновил значение в столбце, он зашифровал бы его для меня, и всякий раз, когда я его выбрал, он был бы расшифрован для меня? Или, может быть, есть способ добавить метод, который вызывается перед вставкой или обновлением или после выбора, который дает вам возможность манипулировать данными? Благодаря!
Я не знаком с 'DBIx :: Class', но если вы можете сделать это для одного столбца, не можете ли вы построить цикл со всеми своими полями в нем и добавить это для каждого из них? Вы даже можете получить столбцы сначала с помощью инструкции SHOW FIELDS для каждой таблицы. Немного утомительно, и я предполагаю, что есть способ добавить обработчик к 'INSERT',' UPDATE' и 'SELECT', но это начало. – simbabque
Обычно вы добавляете такие методы в свой класс 'ResultSet'. –