Node.js Restful API和用户会话

Node.js Restful API和用户会话,node.js,rest,express,login,Node.js,Rest,Express,Login,既然restful api是无状态的,那么在这种情况下如何处理用户会话呢?说我是一套允许用户借书的api,我不需要用户登录来浏览这些书,我该怎么做?用户只有在登录后才能预订,如何保持会话?您的API将向登录的用户分发身份验证令牌,您的端点将使用“需要授权”中间件定义 GET/books(列出书籍,无需授权) POST/books/:bookId(保留一本书,需要授权,未授权返回401) 客户端将在登录时本地存储令牌,并随每个请求发送令牌(由于您将使用SSL,所以它可以在请求本身上) 服务器需要将

既然restful api是无状态的,那么在这种情况下如何处理用户会话呢?说我是一套允许用户借书的api,我不需要用户登录来浏览这些书,我该怎么做?用户只有在登录后才能预订,如何保持会话?

您的API将向登录的用户分发身份验证令牌,您的端点将使用“需要授权”中间件定义

GET/books
(列出书籍,无需授权)

POST/books/:bookId
(保留一本书,需要授权,未授权返回401)

客户端将在登录时本地存储令牌,并随每个请求发送令牌(由于您将使用SSL,所以它可以在请求本身上)

服务器需要将令牌存储在某处,并通过中间件在每个请求上查找它们。缺少令牌(未给出或未找到)意味着请求未经过身份验证。令牌可以本地存储在内存中以启动(如果服务器崩溃则消失,如果负载平衡多个节点则需要粘性会话),或者存储在某些持久数据库中(Redis、Mongo、MySQL)


通常会话有一个过期时间,每个操作也会刷新该时间。如果客户端收到“token expired”消息,他们应该重新登录以更新本地副本,并让服务器存储新值。

您可以使用passport.js和支持sessions@vbranden不,光是passport对restful Api不起作用,我会说这是一个双重身份