我正在使用Spring MVC和Spring HateOAS来创建一个安静且无状态的JSON API。
一切正常。但我有一个“概念”问题。我的API在每个请求中都使用身份验证令牌。例如,您使用登录API来获取身份验证令牌,当您调用我的API时,您必须使用它,如下所示:
http://some_host/api/foo/bar?token=abcd
API始终响应JSON,并通过Spring HateOAS生成链接。例如:
{
"label" : "foo",
"links" : [
"rel" : "self",
"href" : "http://some_host/api/foo/bar/1234656"
]
}
问题是:我应该在生成的URL中添加身份验证令牌吗? (所以它将是http://some_host/api/foo/bar/1234656?token=abcd
)
我找不到任何建议或约定。
答案 0 :(得分:2)
通常,身份验证令牌通过标准HTTP标头(例如HTTP Basic或Digest的Authorization标头)进行通信。另一个常见的是通过cookie。在Servlet环境中,这通常是JSESSIONID cookie。
一般来说,您不应该看到作为请求网址的一部分传递的身份验证令牌。
答案 1 :(得分:0)
这是一个老问题,但答案肯定是否定的。
(*book_pt)[i]
应该是该资源的统一标识符(URI)和位置(URL)。这是您可以信赖的一个URL。您始终可以使用该网址获取资源,但您永远不会再次使用http://some_host/api/foo/bar/1234656
获取资源,因为该令牌将过期。
使用附加的标记调用URL是一回事,但它永远不会出现在链接中,因为它与资源无关。客户有责任发送令牌,而不是服务器的令牌。