OpenID:未经身份验证的POST在身份验证后变为GET

时间:2018-06-07 13:27:34

标签: openid

我正在为我的应用尝试OpenID Connect,并且有一个我无法支持的特定工作流程。

我有一个"加入购物车"向HTTP服务器发出POST请求的按钮。如果用户未经过身份验证,则用户将转至身份提供程序进行身份验证。但是,在对用户进行身份验证后,身份提供商会使用redirect_uri将浏览器重定向到GET,这意味着我的应用程序会丢失用户想要购买的项目的上下文。

我能想到的唯一选择是隐藏"添加到购物车"按钮直到用户登录,但似乎这将是OpenID的一个重要限制。还有其他解决方案吗?

2 个答案:

答案 0 :(得分:0)

重定向始终会成为GET请求,在重定向的情况下无法保留POST主体。所以你可以做的事情很少

  1. 显示登录而非添加到购物车

  2. 登录重定向URI应该具有对具有足够信息的特殊添加到购物车URL的获取请求。所以基本上是一个额外的GET端点,而不仅仅是POST,用于将产品添加到购物车

  3. 允许在未经过身份验证的情况下管理购物车,这是大多数电子商务解决方案所做的事情

答案 1 :(得分:0)

  

如果用户未经过身份验证,则用户会转到身份提供程序进行身份验证。

这是您丢失POST信息的第一个重定向。

因此,在决定必须重定向用户时,您需要将POST数据存储在会话中,并在用户登录后进行拾取。