OpenID: не прошедший проверку подлинности POST становится GET после аутентификации - PullRequest
0 голосов
/ 07 июня 2018

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

У меня есть кнопка "Добавить в корзину", которая вызывает POST запрос к HTTP-серверу.Если пользователь не аутентифицирован, он обращается к провайдеру идентификации для аутентификации.Однако после аутентификации пользователя поставщик удостоверений перенаправляет браузер на redirect_uri, используя GET, что означает, что мое приложение теряет контекст, элемент которого пользователь хотел купить.

Единственная альтернативая могу подумать о том, чтобы скрыть кнопку «Добавить в корзину», пока пользователь не войдет в систему, но, похоже, это будет важным ограничением OpenID.Есть ли другое решение?

Ответы [ 2 ]

0 голосов
/ 18 июня 2018

Если пользователь не аутентифицирован, он обращается к провайдеру идентификации для аутентификации.

Это первое перенаправление, при котором вы теряете информацию POST.

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

0 голосов
/ 13 июня 2018

Перенаправление всегда будет GET-запросом, нет способа сохранить тело POST в случае перенаправления.Таким образом, у вас есть несколько вещей, которые вы можете сделать

  1. Показать логин вместо Добавить в корзину

  2. У URI перенаправления входа в систему должен быть запрос на получениеСпециальное добавление в корзину URL с достаточным количеством информации.Таким образом, в основном дополнительная конечная точка GET вместо простого POST для добавления товара в корзину

  3. Разрешить управление корзиной без проверки подлинности, это то, что делает большинство решений электронной коммерции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...