代码之家  ›  专栏  ›  技术社区  ›  LiorH

使用RESTful方式进行许可和会话

  •  7
  • LiorH  · 技术社区  · 17 年前

    读了这篇文章后,我想起了这个问题: “Common REST Mistakes: Sessions are irrelevant”

    如果在RESTful应用程序中确实不鼓励会话。您将如何处理此类应用程序中的许可证。我特别指的是并发许可证模型,而不是命名许可证。i、 e.客户购买X个许可证,这意味着应用程序最多可以允许X个用户同时登录。这意味着应用程序必须保持当前登录用户的状态。

    如果我采用无状态方法,并要求客户端为每个请求创建一个身份验证令牌,那么应用程序如何知道何时使用和发布该客户端的许可证?

    4 回复  |  直到 9 年前
        1
  •  4
  •   Aram Verstegen    17 年前

    假设我正确地解释了你的问题,让我试着为你连接这些点。 您发布的链接有一个有效的答案,每个请求都应该使用HTTP身份验证。如果您需要许可的概念来维护用户的特定状态,您很可能会将其链接到用户。您有一个(已验证的)用户名可供使用。您只需要为每个请求调用该控制器并保存其状态。这就是你的课程。

        2
  •  1
  •   Steven Levine    17 年前

    您可能想考虑将基础设施堆栈中的许可证处理问题推到一级。有点像面向方面编程(AOP)方法。或许,您可以将其推入web服务器层,而不是在应用层处理它。

    这种方法促进了整个基础架构堆栈中关注点的分离。它允许每一层关注它的目的。应用层根本不需要担心许可问题,允许它严格关注内容,从而保持URL的干净和“RESTful”。

        3
  •  1
  •   SerialSeb    17 年前

    如果您的许可是基于并发用户的,那么实现HTTP摘要是很简单的,并且只允许您启用最大数量的并发登录。摘要提供了传递过期数据的功能,因此您的会话可以超时。

        4
  •  0
  •   Tom Anderson    16 年前

    也许一种更为RESTful的许可方式是限制处理请求的速率,而不是限制并发会话的数量。跟踪过去一小时内的请求数量,如果请求数量超过客户支付的数量,则提供服务 503 Service Unavailable 响应,以及一些提示用户稍后重试的文本。