我正在为我的网络应用程序制作一个REST API,因为它应该是无状态的,我正在使用HTTP Basic Auth发送用户的凭据。
我需要在每个请求的用户数据库中使用查找验证用户名/密码是否正确?这似乎是很多不必要的请求,考虑到我可以验证一次,如果我打破“无国籍规则”,就把它保留在会话中。
答案 0 :(得分:1)
如果您不使用会话cookie进行身份验证,则需要验证每个请求。但是您可以在服务器代码中的某处缓存凭据,这样您就不需要在每次调用时都查询数据库。
基本上你应该记住不要将数据存储太久,例如用户可以更改她/他的凭据。如果您有缓存不匹配,则需要进行另一次数据库查找。
答案 1 :(得分:1)
您可以在验证凭据的位置保留用户名/密码的全局缓存。您的请求仍然是无状态的,但是您将获得比在每个请求中针对数据库(或其他来源)验证用户更好的性能。
另一种选择是创建一个Login方法,您可以在其中返回加密的身份验证令牌。之后,每个其他方法都会期望此令牌并验证而不是密码。这种方法还可以使您使用不同的身份验证机制,而不仅仅是http basic。