Laravel / Angular «Срок действия пароля истек» поток аутентификации

#php #angular #laravel #api #authentication

#php #angular #laravel #API #аутентификация

Вопрос:

Я использую Laravel 7. * для моего API и Angular 9 для моего интерфейса. У меня возникли проблемы с пониманием того, как обрабатывать ответы об истечении срока действия пароля из моего api.

Мой текущий рабочий процесс аутентификации таков:

  1. Запрос Angular POST / login к API с истекшим паролем
  2. API получает POST-запрос, проверяет подлинность учетных данных.
  3. При аутентификации API проверяет, истек ли срок действия пароля.
  4. Если срок действия пароля истек, создайте токен сброса пароля для пользователя.
  5. API отвечает токеном сброса.

Итак, я не знаю, как правильно обработать ответ в моем приложении Angular. Моей конечной целью было бы отправить пользователя на страницу / reset-password и передать токен сброса.

Я попытался перенаправить 301 на URL-адрес / reset-password со своего сервера, но я получаю ошибку CORS. Я мог бы отправить ответ 4 **, но как мне сообщить своему приложению, что ему необходимо перенаправить на страницу сброса пароля, и передать токен? Кто-нибудь добился успеха в этом и был готов поделиться своим подходом?

Комментарии:

1. вы знаете, что можете использовать angular router для программной навигации в приложении angular. if else может сделать трюк. если ответ хороший, перейдите в другое место, перейдите в другое место. Я думаю, это может вам помочь angular.io/guide/router

2. @Elmehdi аутентификация выполняется на сервере. Сначала я должен сообщить Angular, что его необходимо перенаправить на / reset-password … это проблема, с которой я сталкиваюсь. Мне нужно знать, как сообщить angular (из моего Laravel API), что срок действия пароля истек … и дать angular токен сброса для использования, чтобы позволить пользователю изменить пароль.

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

4. @Elmehdi код angular — это просто простой POST-запрос с использованием http-клиента. В angular вообще не выполняется аутентификация.

Ответ №1:

Вы можете использовать свой http post в обычном режиме и обрабатывать ошибки, конечно, ваш серверный сервер отвечает за отправку обратно либо данных, если все в порядке, либо ошибки, если что-то не в порядке, поэтому внутри вашего ts-файла:

 this.http.post('https://your-end-point-url')
    .pipe(
      tap(
        data => {
          // do something with data you receive
        },
        error => {
          this.router.navigate(['/reset-password', { token: token }])
        }
      )
    );
  

убедитесь, что ваш маршрут сброса пароля может обрабатывать параметр токена

Комментарии:

1. Спасибо. Это то, что я в итоге сделал. Я надеюсь, что это достаточно безопасно!

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