mintopia/laravel-encryptable

一个可应用于模型中的可加密特性

v2.0.0 2021-05-16 19:31 UTC

This package is auto-updated.

Last update: 2024-09-17 02:23:58 UTC


README

提供了一种特性,可以在Laravel模型中对值进行解密或加密。

使用方法

将特性添加到模型中,定义$encrypted数组,其中字段将在默认情况下自动加密和解密。

namespace App;

use Cheezykins\LaravelEncryptable\Traits\Encryptable;
use Illuminate\Database\Eloquent\Model;

class MyModel extends Model {
    use Encryptable;

    protected $encrypted = [
        'email'
    ];
}

然后在使用中

$model = new MyModel();
$model->name = 'Chris';
$model->email = 'chris@test.com';
$model->save();

数据库中的电子邮件字段现在将是加密值。

eyJpdiI6IkRZS0lOUlwvR29MbU4zN1diYzl2ZCtnPT0iLCJ2YWx1ZSI6IldEYzVUajlUcDdvVHE0M0kxdForNlE9PSIsIm1hYyI6ImY1MzQ2ZWYwNTNkZDI2YTY2MDgyMmVjZmU3MmI0MGU0NTNmMmU4NWE4OGFmYzZhYTJlYzczMWU1YTdmNzNjYjQifQ==

当检索时,数据将自动为您解密。

$model = MyModel::find(1);
echo $model->email;

> "chris@test.com"

其他访问模型数据的方式也是如此。

$model = MyModel::find(1);
return response()->json($model->toArray());
{
  "id": 1,
  "name": "Chris",
  "email": "chris@test.com"
}

警告

加密值是基于您的Laravel APP_KEY和配置文件app.php中定义的算法存储的。如果您的应用程序密钥更改或丢失,则无法检索数据。

安装

需要项目并使用它。因为它不是必需的,所以没有服务提供者。

composer require cheezykins/laravel-encryptable