php - 如何在从数据库中查询 Laravel 中的用户模型列时对其进行解密
问题描述
我正在尝试解密我的App\Models\User
. 为此,我创建了一个供模型使用的特征。
namespace App\Traits;
use Illuminate\Support\Facades\Crypt;
trait Encryptable {
public function getAttribute($key) {
$value = parent::getAttribute($key);
if (in_array($key, $this->encryptableColumns())) {
return Crypt::decryptString($value);
}
return $value;
}
public function setAttribute($key, $value) {
if (in_array($key, $this->encryptableColumns())) {
$value = Crypt::encryptString($value);
}
return parent::setAttribute($key, $value);
}
protected function encryptableColumns() {
return [
'name',
'service_number',
'team',
'company',
'callsign'
];
}
}
我遇到的问题是$value
从该getAttribute
方法返回的内容未解密。如果我使用die(Crypt::decryptString($value))
我可以看到该值仍然是加密的。
我App\Models\User
的有use App\Traits\Encryptable;
任何帮助表示赞赏。
更新:如果我将它更改为return 'foo';
所有值foo
,它肯定会执行该方法。
如果我运行Crypt::decryptString(Auth::user()->name)
它,那么我很困惑。
解决方案
所以,我非常困惑,但这似乎解决了这个问题:
return Crypt::decryptString(Crypt::decryptString($value));
推荐阅读
- python-3.x - 如何使用python opencv中的阈值识别视频的镜头边界?
- c++ - 我有点问题,我似乎可以理解这个错误
- java - 如何在同一个引用中设置不同的值
- cefsharp - 允许用户使用 cefsharp 浏览器使用鼠标滚轮进行缩放
- powershell - 在 Invoke-Command -Session/ComputerName 中使用 Get-FileHash 时访问被拒绝
- json - 在数组或对象中选择
- azure-devops - 切换现有组织以使用新域名 URL
- publish-subscribe - 接收消息 ID(未来)是否表明消息是在 PubSub 中发送的?
- amazon-web-services - AWS Step Function 可以描述这种数据流吗?
- string - 在 Pascal 中给出字符串类型时出错