链接是否应包含HateOAS中的身份验证令牌?

时间:2013-10-31 13:07:07

标签: java spring spring-mvc hateoas spring-hateoas

我正在使用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

我找不到任何建议或约定。

2 个答案:

答案 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是一回事,但它永远不会出现在链接中,因为它与资源无关。客户有责任发送令牌,而不是服务器的令牌。