宁静的API和用户会话

时间:2016-02-23 14:21:12

标签: node.js rest express login

由于restful api是无状态的,在这种情况下如何进行用户会话?说我是一套允许用户借书的api,我不要求用户登录浏览书籍,我该怎么做?用户只能在登录后预订,如何保持会话?

1 个答案:

答案 0 :(得分:1)

您的API会将身份验证令牌分发给那些登录的用户,并且您的端点将使用"需要授权来定义"中间件。

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

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

客户端会在登录时在本地存储令牌,并在每次请求时发送令牌(因为您将使用SSL,它可以在请求本身上)。

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

通常,会话具有过期时间,每个操作也会刷新该时间。如果客户端获得了#34;令牌过期"消息,他们应该重新登录以更新其本地副本,并让服务器存储新值。