Laravel Проверка по электронной почте приводит к бесконечным перенаправлениям - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь создать валидатор для кода аутентификации, который отправляется пользователям по электронной почте. У пользователя есть ссылка в его электронном письме, по которой он должен щелкнуть, который отправляет их на наш веб-сайт для проверки кода.

Валидатор работает и может проверять код аутентификации по своему аналогу в базе данных. Тем не менее, если создан неверный код аутентификации ... пользователь вводит бесконечный цикл перенаправления.

Это потому, что предыдущей страницы на сайте не существует, я предполагаю ...

Есть ли способ изменить URL перенаправления в этой ситуации? Вот функция ...

class User extends Authenticatable
{
   public function verifyAuthToken(Request $request, $token)
   {
     $data = ["token" => $token];

     // If this fails, it redirects the user to the previous page automatically.
     $result = Validator::make($data, [
         'token' => 'required|exists:users,auth_code,id,' . $this->id,
     ],
     [
       'token' => 'This verification code is invalid, please restart the process.'
     ])->validate();

     // Validation was successful, remove auth code from user...
     $this->auth_code = "";
     $this->save();
   }
}

Проблема здесь в том, что я вызываю эту функцию, выполняя user-> verifyAuthToken с другого контроллера. Я хочу, чтобы этот вызов автоматически перенаправлял пользователя на определенную страницу ... но поскольку возвращаемое значение не входит в сферу действия контроллера, мы не можем сами выполнить перенаправление ... Валидатор выдает исключение, которое laravel прослушивает и обрабатывает само перенаправление .... Мне просто нужен способ выбрать, куда идет перенаправление ...

Laravel Версия: 5.4.36

1 Ответ

0 голосов
/ 24 марта 2020

Одним из подходов может быть управление потоком на основе ошибки валидации, как показано ниже, где вы можете при желании передать старый ввод или значения с помощью вызовов redirect () ...

   $validator = Validator::make($data, [
             'token' => 'required|exists:users,auth_code,id,' . $this->id,
         ],
         [
           'token' => 'This verification code is invalid, please restart the process.'
         ]);

    if($validator->fails()) {
         return redirect('/some/url/for/bad/response');
    } else {
         return redirect('/some/url/for/good/response');
    }
...