【发布时间】:2014-09-01 11:32:33
【问题描述】:
我可以使用Crypt 来加密/解密我的数据。我想加密我数据库中的一些信息(例如姓名、电子邮件、电话号码等等)。
假设我希望对所有内容进行加密,我希望能够在后台自行执行此操作,我可以通过覆盖 create 和 save 函数来执行此操作:
// For instance, the save() function could become
public function save(array $options = array())
{
foreach ($this->attributes as $key => $value)
{
if (isset($value)) $this->attributes[$key] = Crypt::encrypt($value);
}
return parent::save($options);
}
现在,我希望以相同的方式执行解密,这样当我说User::find($id) 时,返回的$user 已经解密。还有其他功能,例如firstOrFail() get() first() 以及所有功能。
我还希望在使用关系时扩展此功能(因此User::with('someOtherTable')->find($id) 也可以使用)。
这可能吗?如果这不可能,我正在考虑创建一个辅助函数decyrpt()
function decrypt($array)
{
if (!is_array($array)) return Crypt::decrypt($array);
$result = [];
foreach($array as $key => $value) $result[$key] = decrypt($value);
return $result;
}
首先通过这个传递我所有的结果,然后开始使用它们,但是如果 Laravel 提供这个,或者如果有这样做的“Laravel 方式”会更好。
【问题讨论】:
标签: encryption laravel laravel-4 eloquent