JavaScript REST 客户端和 session 管理

标签 javascript rest session

我一直在四处寻找这个问题的答案,但似乎没有人这样做。假设您正在设计一个 JavaScript REST 客户端,并且您想要创建一个登录页面。当然,登录后您将通过身份验证。

因此,以下对 REST API 的请求将取决于您当前的用户 ID,该用户 ID 应按照 RESTful 方式存储在客户端。

我的问题是如何使用 Javascript 存储此“ session ”信息。我研究过 cookie,但在我看来,纯文本太多,让人无法相信。还可以使用 cookie 存储一个 session ID,该 session ID 映射到服务器上的用户信息,但这违反了 REST 的无状态概念。

解决此问题的最佳方法是什么?

最佳答案

我们还在构建类似的架构,其中 RESTful API 将由 javascript 客户端访问。

我们将使用客户端凭据对客户端进行身份验证并生成一个身份验证 token 并将其发送给客户端。客户端会将其存储在 cookie 或本地数据存储中。从此客户端向 API 发出的进一步请求将使用 HTTP 授权 header 发送,并将该 token 包含在 header 中。我们将在 API 端对给定 token 的请求进行授权,并在通过身份验证后为请求提供服务。

除非您不在服务器端访问 cookie 信息,否则我不认为这会违反 REST 的无状态原则,因为我们不会在服务器上维护客户端的任何状态(我们不会将其绑定(bind)到任何服务器).关于使用 token 的身份验证过程,我不认为我们在这里绑定(bind)服务器和客户端,因为我们有多个服务器并使用负载均衡器,但这个请求仍然可以由任何服务器提供服务(类似于 Google api)。

注意:我们使用 HTTPS 协议(protocol)执行此操作,因此我们确信所有这些通信都是安全的。

关于JavaScript REST 客户端和 session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16329055/

相关文章:

ios - 从 Swift 函数中的异步调用返回数据

java - ".123"不接受 Spring Rest 请求 406

java - 托管 Bean 注销不起作用

php - 重定向到登录页面,除非用户已登录

php - 将数组作为 json 发送到 php 脚本 : returns empty array

javascript - JavaScript 中测试给定参数是否为平方数的最佳方法是什么?

javascript - 用于检索文本的条件正则表达式

javascript - 为什么我的代码可以在 codecademy javascript 控制台中运行,但不能在 chrome 中运行?

javascript - 如何在 Neo4j 2.2.x 中使用 JQuery 事务性 Cypher HTTP 端点和新的 REST API 身份验证和授权

php - session_unset() 是否已弃用?