如何解决Laravel加密时更新方法?
嗨,我想在用户创建或编辑数据时对数据库中的某些字段进行加密。如果创建,则加密工作正常,但是当用户编辑数据时,保存在数据库中的值将是未加密的普通文本
<?PHP
namespace App\Traits;
use Crypt;
trait Encryptable
{
public function toArray()
{
$array = parent::toArray();
foreach ($array as $key => $attribute) {
if (in_array($key,$this->encryptable) && $array[$key]!='') {
try {
$array[$key] = Crypt::decrypt($array[$key]);
} catch (\Exception $e) {
}
}
}
return $array;
}
public function getAttribute($key)
{
try {
$value = parent::getAttribute($key);
if (in_array($key,$this->encryptable) && $value!='') {
$value = Crypt::decrypt($value);
return $value;
}
return $value;
} catch (\Exception $e) {
return $value;
}
}
public function setAttribute($key,$value)
{
if (in_array($key,$this->encryptable)) {
$value = Crypt::encrypt($value);
}
return parent::setAttribute($key,$value);
}
}
然后我声明需要在模型中加密哪个字段
<?PHP
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
use App\Traits\Encryptable;
class PraApplication extends Model
{
use Encryptable;
protected $table = 'praapplications';
protected $fillable = ['fullname','icnumber','phone','email'];
protected $encryptable = ['icnumber','email'];
}
PHP
当用户更新数据时如何使加密起作用?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。