SPA 使用的经过身份验证的 Rest API:如何获取用于登录和注册表单的 CSRF 令牌?

Posted

技术标签:

【中文标题】SPA 使用的经过身份验证的 Rest API:如何获取用于登录和注册表单的 CSRF 令牌?【英文标题】:Authenticated Rest API used by a SPA : how to get CSRF token for login and registration forms? 【发布时间】:2020-03-26 14:10:55 【问题描述】:

我有一个单页应用程序,它在我正在构建的 rest api 上使用和验证。 整个 SPA 无需身份验证即可加载。

我知道一旦 csrf 令牌在 cookie 中,我将如何处理它们。

对于登录和注册表单,我还没有 CSRF 令牌,因为它们不是服务器呈现的页面。 我是否需要创建一个获取端点“/loadCSRFTokens”来加载 cookie?

什么是好的做法?人们通常会做什么?

我使用的技术是 Angular 和 Spring-security。

【问题讨论】:

【参考方案1】:

当我发布问题时,我有两台服务器:

1 用于加载 SPA 1 个用于所有其他 API

我相信只有您从中加载 SPA 的服务器才能在您的浏览器上设置 cookie。 因此,由于该服务器无论如何都需要能够设置 cookie,因此它可以响应请求“加载 SPA 主页”并且不需要“/loadCSRFTokens”端点。

我通过将 SPA 作为静态内容提供给 rest-API 服务器的一个端点解决了我的问题。

【讨论】:

以上是关于SPA 使用的经过身份验证的 Rest API:如何获取用于登录和注册表单的 CSRF 令牌?的主要内容,如果未能解决你的问题,请参考以下文章

Firestore REST API 使用 http-client 发出经过身份验证的请求

处理django rest framework + vue SPA auth

处理 django rest framework + vue SPA auth

REST API 上的用户注册/身份验证流程

作为经过身份验证的用户,我可以使用 ArcGIS REST-API“applyEdits”来更新要素层吗?

如何使用 REST API 使用 Google Ads API v0 获取经过身份验证的用户的 Google Ad Account ID?