如何检查用户令牌在 CouchDB 中是否仍然有效?

How to check if user token is still valid in CouchDB?

当您想与用户一起登录时,您向 http://localhost:5984/_session 发送 POST 请求并取回 cookie。默认情况下,此 cookie 的有效期为 10 分钟,并存储在我的 $_COOKIE 变量中。

在我的场景中,我希望用户能够根据他是否登录(例如,拥有有效令牌)这一事实与我的网站进行交互。我的问题是如何检查用户 cookie 是否对我的 CouchDB 仍然有效?

借自 :

CouchDB's cookie algorithm (view source) is basically data = username + ':' + timestamp; base64(data + ':' + sha_mac(data, secret)). Where secret is the couch_httpd_auth.secret value plus the user's salt value.

这意味着如果您只想检查时间戳,您可以对 cookie 进行 Base64 解码,然后从结果中提取时间戳,并与当前时间进行比较。

如果您想实际验证 cookie 是否有效(即未伪造),您需要知道用户的密码 salt 和服务器机密。如果这是一个客户端应用程序,那就很危险了。即使它是一个服务器应用程序,它也会将敏感信息放在更多地方,这确实会带来额外的安全风险。这些风险是否值得取决于您和您的实施。