首页 > 解决方案 > 如何使用 laravel 电子邮件加密

问题描述

嗨,我正在尝试对用户表中的电子邮件进行加密,并通过加密更改身份验证过程的“电子邮件”,但对我不起作用,不断返回我的电子邮件与记录不匹配。我的注册控制器是:

User::create([
            'name' => $data['name'],
            'email' => sha1(sha1($data['email'])),
            'password' => Hash::make($data['password']),
            'referred_by' => $referred_by
        ]);

我正在尝试使用 laravel 进行手动身份验证:https ://laravel.com/docs/6.x/authentication#authenticating-users

我的登录控制器:

public function authenticate(Request $request)
    {
        $credentials = $request->only(sha1(sha1('email')), 'password');

        if (Auth::attempt($credentials)) {
            // Authentication passed...
            return redirect()->intended('dashboard');
        }
    }

注意:我知道 sha1 不好,但我认为电子邮件的双倍 sha1 将很难破解。

我也无法准确找到进行身份验证的位置(因为我像 3 周前一样开始学习 laravel),在那里我可以将电子邮件字段的用户输入切换为 sha1 x2,以便它可以与用户表电子邮件进行比较。

谢谢

标签: phplaravel

解决方案


在这里找到答案:https ://laracasts.com/discuss/channels/laravel/encrypt-email-field-in-users-table

通过以下方式更改 AuthenticatesUsers 的功能登录:

public function login(Request $request)
    {
        if (Auth::attempt(['email'  => sha1(sha1($request->email)), 'password' => $request->password])) {
            return redirect()->intended();
        } else {
            return $this->sendFailedLoginResponse($request);
        }
    }

感谢 saaz。


推荐阅读