Как добавить параметр состояния для Uberauth в эликсире

Во время процесса oAuth хорошо установить параметр состояния, чтобы авторизовать URL для безопасности. Когда я проверял Uberauth Shopify, https://github.com/kodehort/ueberauth_shopify/blob/master/lib/ueberauth/strategy/shopify.ex#L88 он отправлялся в shopify.

Но я не понимаю, как мне нужно установить этот параметр состояния в моем приложении Phoenix, чтобы Shopify получал его. Какие-либо предложения?

2 ответа

Решение

Вы поставляете state в URL, который вы передаете Ueberauth (таким же образом, scopes также пройдены)

В зависимости от настроек маршрутизатора, по умолчанию:

pipeline :auth do
  Ueberauth.plug "/auth"
end

scope "/auth" do
  pipe_through [:browser, :auth]

  get "/:provider/callback", AuthController, :callback
end

вы поставляете scopes а также state перенаправив вашего пользователя на указанный URL авторизации:

/auth/shopify?scopes=read_orders%20read_products&state=yourSuperSecretState

или без каких-либо областей:

/auth/shopify?state=yourSuperSecretState

С недавнего времени Ueberauth автоматически устанавливает и проверяет его по умолчанию, чтобы защитить вас от CSRF .

Другие вопросы по тегам