我正在用Play实现一个REST api ...我知道REST api应该是无状态的。我的api是一种混合api,当用户进行身份验证时,我会发回一个令牌,用于对任何后续请求进行签名。这个令牌在用户不再向服务器发送请求一段时间后过期-在服务器端,我使用MongoDB集合来处理活动令牌。
现在我的问题是:我应该如何处理这个令牌?请求是否应该在主体中包含令牌?或者我应该在请求头中提供令牌?
考虑到我正在使用Play,即使我并不真正使用cookies,使用RequestHeader.cookies
发送令牌仍然是正确的吗?
任何关于如何为我的REST api实现一个像样的身份验证机制的建议都将不胜感激。
发布于 2014-03-19 00:34:33
TLDR:你应该使用cookie。
将令牌存储在用户的cookie中通常是最好的方法。cookies在每次请求时都会通过头传递到服务器,因此通过某种机制创建自己的保持状态的实现将是大量的冗余工作(并增加某些东西崩溃的可能性)。仅仅因为你在客户端保持状态并不意味着这是不好的…无状态编程的整个思想是,当您在N台机器上进行负载平衡时,您不会担心给定用户的请求会被路由。
你可以看看我写的这个示例应用程序:https://github.com/kaeawc/play-encryption
如果你想阅读更多关于这个主题的内容,我建议你阅读这篇文章作为一个很好的指南:The definitive guide to form based website authentication
https://stackoverflow.com/questions/22474268
复制相似问题