如何检查用户令牌在 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 和服务器机密。如果这是一个客户端应用程序,那就很危险了。即使它是一个服务器应用程序,它也会将敏感信息放在更多地方,这确实会带来额外的安全风险。这些风险是否值得取决于您和您的实施。
当您想与用户一起登录时,您向 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))
. Wheresecret
is the couch_httpd_auth.secret value plus the user's salt value.
这意味着如果您只想检查时间戳,您可以对 cookie 进行 Base64 解码,然后从结果中提取时间戳,并与当前时间进行比较。
如果您想实际验证 cookie 是否有效(即未伪造),您需要知道用户的密码 salt 和服务器机密。如果这是一个客户端应用程序,那就很危险了。即使它是一个服务器应用程序,它也会将敏感信息放在更多地方,这确实会带来额外的安全风险。这些风险是否值得取决于您和您的实施。