Laravel 5.7 Проверка электронной почты не работает с разными браузерами - PullRequest
0 голосов
/ 07 января 2019

Недавно я внедряю проверку электронной почты с использованием Laravel 5.7.

Я обнаружил, что проверка электронной почты не работает, если вы следуете следующему сценарию.

Сценарий 1

Пользователь зарегистрировал учетную запись в браузере A и активировал ее в браузере B.

Затем он перенаправит пользователя на страницу входа.

Очевидно, что активация электронной почты не удалась.

Сценарий 2 (для моего случая использования)

Пользователь зарегистрировал учетную запись в браузере A.

Письмо с активацией было отправлено на мобильный почтовый ящик.

Пользователь активирует электронную почту с мобильного телефона, и активация не работает.


Я предполагаю, что активация завершилась неудачно, если для активации использовался другой агент браузера, поскольку сеансовый ключ активации ключа не найден.

Кто-нибудь сталкивался с той же проблемой и смог найти решение?

1 Ответ

0 голосов
/ 01 февраля 2019

Поскольку способ проверки электронной почты Laravel работает, требуется, чтобы пользователь вошел в систему, чтобы иметь возможность обработать ссылку проверки. Вы можете исправить это, изменив следующее в VerificationController

  1. В функции __construct () создайте исключение auth middleware для функции проверки
    $this->middleware('auth')->except('verify');
  1. Создание функции проверки для переопределения функции проверки laravel
    public function verify(Request $request)
    {
        $userId = $request->route('id');
        $user = User::findOrFail($userId);

        if ($user->hasVerifiedEmail()) {
            return redirect($this->redirectPath());
        }

        if ($user->markEmailAsVerified()) {
            event(new Verified($user));
        }

        return redirect($this->redirectPath())->with('verified', true);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...