由于restful api是无状态的,在这种情况下如何进行用户会话?说我是一套允许用户借书的api,我不要求用户登录浏览书籍,我该怎么做?用户只能在登录后预订,如何保持会话?
答案 0 :(得分:1)
您的API会将身份验证令牌分发给那些登录的用户,并且您的端点将使用"需要授权来定义"中间件。
GET /books
(列出书籍,无需授权)
POST /books/:bookId
(保留一本书,需要授权,如果未经授权则返回401)
客户端会在登录时在本地存储令牌,并在每次请求时发送令牌(因为您将使用SSL,它可以在请求本身上)。
服务器需要在某处存储令牌,并在每个请求中通过中间件查找它们。没有令牌(未给出或未找到)意味着请求未经过身份验证。令牌可以本地存储在内存中以启动(如果服务器崩溃则消失,如果负载平衡多个节点则需要粘性会话),或者在某些持久性数据库(Redis,Mongo,MySQL)中。
通常,会话具有过期时间,每个操作也会刷新该时间。如果客户端获得了#34;令牌过期"消息,他们应该重新登录以更新其本地副本,并让服务器存储新值。