【问题标题】:HTTP Headers + Form Data from incoming POST request in Angular来自Angular中传入POST请求的HTTP标头+表单数据
【发布时间】:2021-01-01 16:16:55
【问题描述】:

我正在处理一个按以下方式工作的授权系统:

  1. 用户被发送到第三方登录页面
  2. 用户输入凭据
  3. 网站使用包含身份验证令牌的 POST 请求将用户重定向回我的网站。

有什么方法可以让我在 Angular 中获取 POST 请求的标头吗?

如果没有,是否有任何替代方法来处理这种情况?如果有帮助的话,我正在使用 Ngingx 网络服务器。

【问题讨论】:

  • 这是不可能的。如果它类似于 Auth0,他们会提供一个 js 客户端,您可以在其中按需检索令牌。如果他们不提供,你最好的选择是找到一个不同的身份验证提供者或者finagle一些API来接收请求,然后用令牌呈现你的前端。

标签: angular http authentication jwt token


【解决方案1】:

这就是你如何获得它

  1. 您需要一个服务器端应用程序 - 选择您最喜欢的工具,如果您熟悉 Angular,则可能是 Node.js

  2. 将身份验证网关配置为 POST 到您的服务器端应用程序

  3. 服务器端应用程序接受 POST,然后重定向回一个特殊的 Angular“登录成功”路由

根据具体情况或身份验证令牌的使用方式,您有一些选择

4.1) 服务端应用程序设置一个cookie,Angular可以读取这个cookie,知道它已经正确登录

4.2) 如果有任何令牌,例如 JWT,服务器端应用程序可以对其进行验证并在重定向中将其传递给 Angular,然后应用程序将其存储在本地存储中

作为一个安全问题,如果数据是敏感的,请确保在重定向期间没有记录身份验证令牌。

【讨论】:

  • 这就是我们目前正在走的路线,但感觉就像一个肮脏的黑客。我们有一个 SPA,我们不需要构建一个服务器组件来处理 POST 请求。我们还在研究 NGINX 重写请求动词、位置并添加标头/cookie,但希望避免使用 lua(公司政策阻碍了该 atm)。有效负载是 JWT 令牌。
  • @MattD 这确实是唯一的方法。听起来这个身份验证客户端的设计并不适合与 SPA 一起使用。
  • 一些 JWT 身份验证服务(如 Xsolla)通过重定向将令牌直接返回给客户端,但您的服务似乎需要额外的 POST 步骤。
猜你喜欢
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
相关资源
最近更新 更多