我正在使用users table
。
最近,我要求加密 Encryptable trait
的数据。所以,我已经关注了[this] [1]链接,并创建了一个<?php
namespace App\Traits;
use Config;
use Crypt;
trait Encryptable
{
public function getAttribute($key)
{
$value = parent::getAttribute($key);
if (in_array($key, $this->encryptable) && Config::get('app.encrypt_data_at_rest')) {
$value = Crypt::decrypt($value);
}
return $value;
}
public function setAttribute($key, $value)
{
if (in_array($key, $this->encryptable) && Config::get('app.encrypt_data_at_rest')) {
$value = Crypt::encrypt($value);
}
return parent::setAttribute($key, $value);
}
}
as,
User model
并在我的<?php
namespace App\Models;
class User extends BaseModel implements AuthenticatableContract,
AuthorizableContract,
CanResetPasswordContract {
use SoftDeletes;
use Encryptable;
protected $encryptable = ['username'];
中使用它;
username
并插入记录并成功加密username
。
但现在问题是,我无法使用此password
和username
无法登录。
在数据库中,username
似乎已加密。如果我在控制器中获得该特定用户的User::find(89)->username
(例如getAttribute()
),那么它会返回解密用户名(即我在创建此用户时插入的简单字符串)归因于Encryptable trait
的{{1}}方法。
但是我无法使用Auth::attempt()
方法,因为它返回false
。我在使用username
方法时传递未加密 password
和Auth::attempt()
。
有任何建议如何解决这个问题?