当我创建一个特征以加密数据库中的密码(出于安全目的)并尝试使用它时,我得到:“有效负载无效。如何解决此问题?
trait Encryptable
{
public function getAttribute($key)
{
$value = parent::getAttribute($key);
if (in_array($key, $this->encryptable, true)) {
$value = Crypt::decrypt($value);
}
return $value;
}
public function setAttribute($key, $value)
{
if (in_array($key, $this->encryptable, true)) {
$value = Crypt::encrypt($value);
}
return parent::setAttribute($key, $value);
}
}
class User extends Authenticatable
{
use Notifiable;
use Encryptable;
protected $encryptable = [
'password',
];
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
}
答案 0 :(得分:1)
密码是散列的,未在Laravel中加密。这是为了防止将密码撤回数据库(恶意或从开发人员撤回)。该哈希是单向过程,没有办法撤回密码和/或将密码发送给用户。为了安全起见,您可能希望重新考虑使用哈希而不是加密的体系结构。
Here是一个很好的讨论,基本上是在说同样的话。
希望这会有所帮助。