微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel加密时更新方法?

如何解决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 举报,一经查实,本站将立刻删除。