播放,REST和身份验证

时间:2014-03-18 08:47:49

标签: rest authentication playframework

我正在使用Play实现REST API ...我知道REST api应该是无状态的。好吧,我的api是一个混合体,从某种意义上说,当用户进行身份验证时,我会发回一个令牌,用于签署任何后续请求。此令牌在用户不再向服务器发送请求一段时间后到期 - 在服务器端,我使用MongoDB集合来处理活动令牌。

现在我的问题是:我应该如何处理这个令牌?请求是否应包含正文中的令牌?或者我应该在请求标头中提供令牌吗?

考虑到我正在使用Play,即使我没有真正使用Cookie,使用RequestHeader.cookies发送令牌仍然是正确的吗?

关于如何为我的REST api实现合适的身份验证机制的任何建议都将非常感激。

1 个答案:

答案 0 :(得分:0)

TLDR:你应该使用cookies。

将令牌存储在用户的cookie中通常是最好的方法。 Cookie会在每个请求时通过标头传递给服务器,因此通过在标头中继续使用标记的某种机制创建自己的保持状态的实现将是大量的冗余工作(并增加了某些东西会破坏的机会)。仅仅因为你在客户端保持状态并不意味着这很糟糕......无状态编程的整个想法就是当你在N台机器上进行负载均衡时,你并不担心关于给定用户的请求被路由。

您可以查看我写的这个示例应用:https://github.com/kaeawc/play-encryption

如果您想了解更多有关该主题的信息,我建议您将其作为一个非常好的指南:The definitive guide to form based website authentication