【发布时间】:2012-07-23 15:53:50
【问题描述】:
我正在使用 dbix::class 和催化剂与我的数据库进行交互。但是,我存储的一些数据是敏感的,所以我想在它进入数据库之前加密(插入或更新)并在它出来时解密(选择)。我知道如何使用这个模块:DBIx::Class::PassphraseColumn 你可以在将密码放入数据库时自动加密密码:
__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,但这是一个开始。 -
通常您会将此类方法添加到您的
ResultSet类中。
标签: perl encryption catalyst dbix-class