2

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

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

4

2 回答 2

1

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

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

于 2013-03-14T15:51:14.920 回答
1

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

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

于 2013-03-14T15:51:44.090 回答