4

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

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

4

2 回答 2

2

通常,身份验证令牌通过标准 HTTP 标头(例如 HTTP Basic 或 Digest 的 Authorization 标头)进行通信。另一种常见的方法是通过 cookie。在 Servlet 环境中,这通常是 JSESSIONID cookie。

一般来说,您不应该看到作为请求 URL 的一部分传递的身份验证令牌。

于 2013-11-02T04:21:39.383 回答
0

这是一个老问题,但答案肯定是否定的。

http://some_host/api/foo/bar/1234656应该是该资源的统一标识符 (URI) 和位置 (URL)。这是您可以依赖的一个 URL。您始终可以使用该 URL 获取资源,但您将永远无法http://some_host/api/foo/bar?token=abcd再次获取该资源,因为令牌将过期。

调用附加令牌的 URL 是一回事,但它不应该出现在链接中,因为它与资源无关。发送令牌是客户端的责任,而不是服务器的责任。

于 2015-11-26T17:48:23.743 回答