【问题标题】:REST + HTTP Basic Auth - necessary to do user lookup every request?REST + HTTP Basic Auth - 需要对每个请求进行用户查找?
【发布时间】:2013-03-14 15:46:36
【问题描述】:

我正在为我的网络应用程序制作一个 REST API,因为它应该是无状态的,所以我正在使用 HTTP 基本身份验证发送用户的凭据。

对于每个请求,我需要在我的用户数据库中查找来验证用户名/密码是否正确?考虑到我可以验证一次,如果我违反“无状态规则”,这似乎是很多不必要的请求。

【问题讨论】:

  • 你的服务器端技术是什么?
  • 您预计每秒有多少用户?

标签: rest basic-authentication


【解决方案1】:

如果您不使用会话 cookie 进行身份验证,则需要验证每个请求。但是您可以在服务器代码中的某处缓存凭据,这样您就不需要在每次调用时查询数据库。

基本上,您应该记住不要将数据存储太久,例如用户可以更改她/他的凭据。如果你有一个缓存不匹配,你需要做另一个数据库查找。

【讨论】:

    【解决方案2】:

    您可以在验证凭据的位置保留用户名/密码的全局缓存。您的请求仍将是无状态的,但与在每个请求中针对数据库(或其他来源)验证用户相比,您将获得更好的性能。

    另一种选择是创建一个登录方法,您可以在其中返回一个加密的身份验证令牌。之后,所有其他方法都需要这个令牌并验证它而不是密码。这种方法还可以让您使用不同的身份验证机制,而不仅仅是 http 基本。

    【讨论】:

      猜你喜欢
      • 2017-05-22
      • 2017-11-16
      • 2012-10-27
      • 2014-02-23
      • 1970-01-01
      • 2012-06-13
      • 2017-11-05
      • 1970-01-01
      • 2017-08-20
      相关资源
      最近更新 更多