как работать с шифрованием электронной почты Laravel - PullRequest
1 голос
/ 02 ноября 2019

Привет. Я пытаюсь работать с шифрованием писем в пользовательской таблице и изменяю "электронную почту" процесса аутентификации с помощью шифрования, но не работаю, продолжаю возвращать, что моя электронная почта не соответствует записям. Мой RegisterController:

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

мой LoginController:

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

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

Примечание: Я знаю, что sha1 не очень хорош, но я думаю, что двойную из sha1 для электронных писем будет довольно сложно взломать.

также я не могу точно определить, где происходит аутентификация (потому что я начал изучать laravel примерно за 3 неделиназад) где я могу переключить пользовательский ввод поля электронной почты в sha1 x2, чтобы он мог сравниваться с электронными таблицами пользователей.

Спасибо

Ответы [ 2 ]

1 голос
/ 02 ноября 2019

Нашел ответ здесь: 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.

0 голосов
/ 02 ноября 2019

вы можете использовать base_encode также как

'email' => base64_encode($request->email);

или вы также можете определить и затем использовать его как.

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

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

или

public function login(Request $request)
    {
          $email = sha1(sha1($request->email));

          if (Auth::attempt(['email'  => $email , 'password' => $request->password])) {
            return $arr = array("status" => 400, "msg" => success, "result" => array());
        } else {
            return $this->sendFailedLoginResponse($request);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...