将验证码令牌放入 REST API 的最佳位置在哪里



我正在设计一个允许客户端POST(创建(资源的REST api。让我们调用我的资源是Subscription,我的 REST API 接受一个名为 Subscription 的 DTOPOST 请求需要与将在服务器端验证的验证码一起发送。

我的问题是放置验证码令牌的最佳位置在哪里,我正在考虑一些选项:

  1. 直接在Subscription
  2. 作为 URL 中的参数,例如:/subscriptions?captcha_token=abcd1234
  3. 作为 HTTP 标头
  4. 创建一个新的 Dto,用于包装Subscription和携带字段captchaToken

欢迎任何其他建议。

谢谢。

对于任何与身份验证或授权相关的内容,我通常依赖于标头或查询字符串参数。

通常,我不喜欢将有效负载与与身份验证相关的材料混合在一起,也不喜欢封装它。

将其放在 HTTP 标头中或作为查询字符串参数可以在那里提供大量的隔离。 此外,由于它独立于请求正文,因此您可以为每个 API 调用实现更广泛的身份验证控制,而无需依赖于请求正文的存在(对于无论如何都不应该携带请求正文的 GET 请求很重要(。

仅当您

的客户端可以修改/发送 HTTP 标头信息时,才可以使用 HTTP 标头。此方法不适用于标准浏览器。

您没有过滤资源,因此从 REST 的角度来看,查询参数没有意义,并且您不希望将验证码答案作为查询参数发送。

通常,一个人提交验证码信息(id,答案(以及表单数据(有效载荷(。您通常还会将验证码与表单一起显示。

因此,最后唯一有用的选择是将验证码信息作为有效负载/表单数据的一部分发送。

是否应该将数据放入订阅DTO取决于您的设计/偏好。

我建议使用类似Subscription(Data)SubscriptionRequest的东西,其中SubscriptionRequest包含SubscriptionData和 Captha 信息(验证码 ID 和答案(

最新更新