REST服务中的会话

时间:2011-10-12 12:41:17

标签: web-services session rest web

我正在开发小型REST服务,它应该支持客户端会话持久性。如您所知,由于REST,我们无法在服务器上存储任何客户端数据,数据必须存储在客户端,客户端的请求必须是自给自足的。那么......我们如何存储客户会话?通过互联网搜索我发现了一些如何实现这一点的方法。例如:我们向客户端发送包含客户端ID(缺口等)的加密令牌,如令牌= AES(id,secretKey);然后我们授权用户使用密钥在服务器上解密令牌的每个请求。任何人都可以提出建议吗?也许有另一种好方法可以做同样的功能。哪个加密算法更适合这个?谢谢。

2 个答案:

答案 0 :(得分:8)

你提到了:

  

如您所知,由于REST,我们无法存储任何客户端数据   服务器,数据必须存储在客户端,客户端的请求必须   自给自足。

REST并未说您无法在服务器上存储客户端数据;它只是说你不应该存储应用程序状态,你可以将其视为“这个客户端正在尝试做什么”。

如果您主要尝试使用经过身份验证的用户的概念,那么标准登录Cookie将正常运行并且不会“不合适”。

答案 1 :(得分:2)

这一切都取决于你对这个问题的回答:为什么你首先需要一个“会话”概念?

如果您需要确保客户端传递代表一组凭据的cookie,请考虑让客户端将它们作为HTTPS身份验证标头传递给每个请求。

如果您需要遵循一些粘性路由规则(以确保将客户端的请求发送到特定服务器),请考虑利用此机会摆脱该架构式紧身衣,因为这是消除机会的最快方法未来的可扩展性。相反,让您的服务器选择任意。

如果您绝对必须路由到特定节点,请尝试要求客户端传递足够的标识数据,您可以使用它来散列或将客户端分散到特定的“泳道”。例如,您可以根据用户名进行拆分。

相关问题