RESTful API中会话的替代解决方案

RESTful API中会话的替代解决方案,rest,api,session,Rest,Api,Session,情景: 我正在为一个预订系统开发一个API,在这个API中,未注册的用户可以获得一个带有服务价格的报价,然后在以后使用该报价进行带有附加信息的预订 问题: 我如何验证由请求生成的报价,例如,QT001不会被任何其他请求使用。例如,任何人都可以随机猜测报价id并请求预订。如何确认第二个预订请求来自发送报价请求的同一用户 很抱歉,如果上下文不够清晰,因为我是RESTful API的新手。如果您对Cookie没有意见,那么: 创建quote时,服务器应使用类似quote的键和quote id作为值(例

情景:

我正在为一个预订系统开发一个API,在这个API中,未注册的用户可以获得一个带有服务价格的报价,然后在以后使用该报价进行带有附加信息的预订

问题:

我如何验证由请求生成的报价,例如,QT001不会被任何其他请求使用。例如,任何人都可以随机猜测报价id并请求预订。如何确认第二个预订请求来自发送报价请求的同一用户


很抱歉,如果上下文不够清晰,因为我是RESTful API的新手。

如果您对Cookie没有意见,那么:

创建quote时,服务器应使用类似quote的键和quote id作为值(例如QT001)设置cookie 当请求预订时,服务器获取Quote的cookie值,并将其与用户请求预订的Quote id进行比较 如果有人只是猜测报价id,则不会有匹配项
这可以通过使用授权令牌来实现。基于令牌,您可以识别用户身份。这样你就可以检查是谁发送了请求。@Redan我也想到了同样的解决方案,你能提供一些参考资料吗。既然用户不是注册用户,我该如何为他们生成令牌?而且,令牌应该是随机的纯文本还是用API密钥或其他安全的东西加密?问题是,为什么不注册用户?令牌将保护您的API。我使用本教程来更好地理解基于令牌的身份验证,强制用户注册只是为了获得报价将增加一个额外的步骤,因此为了减少这一步骤,用户不需要注册。我很好奇如何在不注册用户的情况下生成访问令牌。我认为您可以为引号生成唯一的ID。您的api将返回{UniqueID:1,Name:QT001},然后前端将使用该唯一ID调用另一个api。在c语言中,有一个GUID函数,它可以生成一个字符串,该字符串可以是您的唯一ID。通过这种方式,您将不会使用令牌,但restful体系结构不建议保持状态。这不会违反restful api的工作方式。也许您可以考虑您的情况是否需要无状态。例如,如果您使用的是负载平衡器,那么cookie解决方案将无法工作。如果您确实需要请求中的所有内容,那么您可以1在创建报价时,将令牌返回给用户2在服务器DB中保存令牌报价id映射3用户预订请求应具有报价id和令牌4当服务器接收预订请求时,将请求中的报价id和令牌与DB进行比较。如果这是一个匹配,那么请继续为您的答案@Ramesha努力。事实上,我使用了你刚才建议的方法,目前对我来说效果很好。我误解了授权令牌和验证令牌的概念,这使得情况变得困难。再次感谢。