我如何在 Laravel 中散列用户名

How can i hash username in Laravel

我使用 Laravel 身份验证并希望散列所有用户数据。 我如何在 Laravel 中散列用户名并像密码一样在登录页面中解码?

我这样编辑注册控制器

 protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'username' => bcrypt($data['username']),
            'password' => bcrypt($data['password']),
        ]);
    }

哈希不同于 encoding/decoding。哈希是一种单向过程,而 decoding/encoding 是一种双向过程。

对于Hash来说,一旦对某些东西进行了hash,你就不能再得到原来的了,但是,如果你使用相同的值再次hash,你将得到相同的hash结果。

对于decode/encode,可以取回原来的值

Laravel 默认情况下,密码是散列的,没有加密或编码。

所以,散列用户名不是个好主意。一旦用户名经过哈希处理,您将永远不会知道它是什么。

是的,哈希是一种方式的过程,但您可以对相同类型的过程使用加密。

use Illuminate\Support\Facades\Crypt;

$encrypted = Crypt::encryptString('Hello world.');

$decrypted = Crypt::decryptString($encrypted);

非PHP 接收加密值的客户端将需要反序列化数据。如果您想在不序列化的情况下加密和解密值,您可以使用 Crypt facade 的 encryptString 和 decryptString 方法。

所以总是使用 Crypt Facade,因为所有东西都会自动在后台运行。