Laravel 在存储到 DB 之前加密密码并将其解密以用于电子邮件设置

问题描述

我按照本教程创建了存储在 db 上的动态电子邮件设置。

https://kayike.medium.com/enable-unique-and-dynamic-smtp-mail-settings-for-each-user-laravel-48e320d381ec

唯一的问题是密码没有加密。我想在存储到 db 之前对其进行加密,并在使用 MailServiceProvider 之前对其进行解密。

我尝试使用 bcrypt,但无法解密。有什么建议吗?

谢谢

解决方法

查看加密文档:https://laravel.com/docs/8.x/encryption

encrypting 密码:

$encrypted = crypt::encryptString($password);

//存入数据库

decrypting 密码:

$decrypted_password = crypt::decryptString($encrypted);
//use this for mailer settings

注意:不要忘记使用命名空间Illuminate\Support\Facades\Crypt; 在控制器中

bcrypt 的附加说明: 加密解密不同于散列,bcrypt 是一个无法解密的散列公式(单向过程)。