读完这篇文章后,我想到了这个问题:
“Common REST Mistakes: Sessions are irrelevant”
如果在 RESTful 应用程序中确实不鼓励 session 。您将如何处理此类应用程序中的许可证。我特别指的是并发许可证模型而不是命名许可证。即客户购买 X 个许可证,这意味着该应用程序最多可以允许 X 个用户同时登录。这意味着应用程序必须保持当前登录用户的状态。
我知道我可以创建一个名为 licenses 的资源,它会设置一个 cookie 或生成一个唯一的 ID,然后客户端必须随每个请求发送它。但这与创建 session 相同,对吗?
如果我将采用无状态方法并要求客户端为每个请求创建一个身份验证 token ,应用程序如何知道何时为该客户端使用和发布许可证?
有替代方案吗?特别是一个更 RESTful 的替代方案?
最佳答案
假设我正确解释了您的问题,让我尝试为您连接点。
您发布的链接有一个有效的答案,每个请求都应使用 HTTP 身份验证。如果您需要许可证的概念来为您的用户维护某种状态,您很可能可以将其链接到用户。您有一个(经过验证的)用户名。您只需要为每个请求调用该 Controller 并保存其状态。你有你的 session 。
任何关键信息都不应信任 Cookie 输入,但对于像安全 token 这样的额外验证非常有用。我认为在您的现场链接中添加一个随机的安全 token 字段将是一种 Restful 方法。当然,它应该随着“ session ”而过期。
关于authentication - 以 RESTful 方式许可和 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/545275/