Laravel 在添加之前对数据库中的附加值进行哈希运算

Laravel 在添加之前对数据库中的附加值进行哈希运算,laravel,laravel-5.6,Laravel,Laravel 5.6,我必须在添加到数据库之前散列数据库值,并在选择之后重新散列数据库值,以便于阅读。现在我在app文件夹中创建“Helper\Helpers.php”。在helpers文件中,我有用于加密/解密值的函数。已注册到composer autoloads的帮助程序文件: "autoload": { "classmap": [ "database/seeds", "database/factories" ], "psr-4": { "A

我必须在添加到数据库之前散列数据库值,并在选择之后重新散列数据库值,以便于阅读。现在我在
app
文件夹中创建
“Helper\Helpers.php”
。在helpers文件中,我有用于加密/解密值的函数。已注册到composer autoloads的帮助程序文件:

"autoload": {
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files":[
        "app/Helpers/Helpers.php"
    ]
},

在我看来,这种方法(在composer中注册文件)是一种不受保护的选项,用于注册存储在其自身中的函数的文件进行加密。要获得更可靠的保护,我可以在哪里存储和使用具有加密和解密功能的文件?

如果您定义了模型,我建议您。它允许您在写入存储之前对值进行加密,然后在读取时进行解密:

// mutator
public function setMyHashedValueAttribute($value)
{
    $this->attributes['my_hashed_value'] = encrypt($value);
}

// accessor
public function getMyHashedValueAttribute($value)
{
    return decrypt($value);
}

当我注册到laravel项目时,我的个人信息是加密的。当我想使用数据库中的电子邮件登录时,Laravel找不到我的电子邮件并返回错误:
这些凭据与我们的记录不匹配。
。它无法在登录时解密电子邮件。我可以在哪里解密登录信息并访问应用程序@DigitalFlovery您可能需要使用
Hash::check
与哈希值进行比较,如
Hash::check('foo@example.com“,$hashedEmail)
。或者,您可以在请求发布到服务器时对电子邮件地址进行散列,以便Laravel在数据库中进行查找时使用散列值。