sinavia/laravel-vault

Laravel的加密库实现

v1.0.0 2018-07-14 12:36 UTC

This package is auto-updated.

Last update: 2024-09-27 05:37:30 UTC


README

Laravel的加密库(数据静态存储)实现。可以直接使用,也可以附加到Laravel模型上。当附加到模型上时,它将属性值安全地存储在Vault的表中。模型表中的属性只包含对应Vault表的标识符。

安装

composer require sinevia/laravel-vault

数据库表结构

以下结构用于数据库。

如何使用

1. 迁移

  • 1.1. 将迁移文件添加到数据库/migrations目录
<?php

class VaultTablesCreate extends Illuminate\Database\Migrations\Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up() {
        Sinevia\Vault\Models\Vault::tableCreate();
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down() {        
        Sinevia\Vault\Models\Vault::tableDelete();
    }

}
  • 1.2. 运行迁移以创建Vault表
php artisan migrate

2. 直接使用Vault

  • 2.1. 将值存储到Vault中。如果成功,将返回Vault ID,表示值已安全存储
$vaultId = \Sinevia\Models\Vault::storeValue($value, $password);
  • 2.2. 使用存储值的Vault ID检索值(请参阅上述示例)。
$value = \Sinevia\Model\Vault::retrieveValue($vaultId, $password);

3. 将Vault与模型一起使用

  • 3.1. Vault密钥

在app/Helpers/App中创建一个新的类,带有vaultKey方法。该函数应返回一个字符串,包含用于保护您值的密钥。不要丢失您的密钥,否则您将无法恢复您的值

  • 3.2. 将VaultAttribute特质添加到模型
use \Sinevia\Vault\VaultAttributeTrait;
  • 3.3. 指定与Vault一起使用的属性
class ExampleModel {

    use \Sinevia\Vault\VaultAttributeTrait;
    
    public function getUsernameAttribute($value) {
        return $this->getVaultAttribute($value);
    }
    
    public function setUsernameAttribute($value) {
        return $this->setVaultAttribute('Username', $value);
    }
}
  • 3.4. 使用加密属性
$exampleModel->Username = 'test';
$exampleModel->save();