#php #angular #laravel #api #authentication
#php #angular #laravel #API #аутентификация
Вопрос:
Я использую Laravel 7. * для моего API и Angular 9 для моего интерфейса. У меня возникли проблемы с пониманием того, как обрабатывать ответы об истечении срока действия пароля из моего api.
Мой текущий рабочий процесс аутентификации таков:
- Запрос Angular POST / login к API с истекшим паролем
- API получает POST-запрос, проверяет подлинность учетных данных.
- При аутентификации API проверяет, истек ли срок действия пароля.
- Если срок действия пароля истек, создайте токен сброса пароля для пользователя.
- 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. Если вы хотите большей безопасности, вам нужно будет использовать защиту маршрутизатора. это тоже угловая функция.