mintopia / laravel-encryptable
一个可应用于模型中的可加密特性
v2.0.0
2021-05-16 19:31 UTC
Requires
- php: >=8.0
- illuminate/support: ^8.0
Requires (Dev)
- illuminate/database: ^8.0
- mockery/mockery: ^1.1
- phpunit/phpunit: ^9.0
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