ruby-on-rails – REST API:我是否需要验证注销操作?
我正在编写REST API服务器(使用Rails),这是一个关于会话管理的问题.
我认为对于REST API服务器,我们不需要为每个用户保存登录状态(或会话).所以我只为每个用户添加一个身份验证令牌.如果他们登录,则此服务器将向此返回此令牌,如果注销,则将其销毁. 而且我想知道是否有必要验证此令牌销毁操作?可能有恶意用户迭代所有可能的令牌(可能!)并将它们包装在我的服务器的DELETE请求中…… 非常感谢! 解决方法
宁静的Web服务的一个方面是
Wikipedia文章中描述的无状态.
服务器不应包含任何有关会话的信息,这意味着必须在每个请求中包含身份验证信息,并且不需要登录或注销方法. 最佳实践是提供资源(如某些OAuth2实现),它返回具有特殊范围和到期时间的令牌.在创建过程中,令牌应存储在后端的数据库中.令牌过期后,必须从数据库中删除信息,客户端必须获取令牌的新副本. 更新: @Ekkehard,这正是我对评论的意思.代替使用具有会话ID,cookie和会话超时的有状态’http会话,该令牌应由另外的资源提供.
如果客户端想要访问后端的特殊服务,则必须向令牌资源发送POST请求(后端在数据库中存储具有特殊到期时间的新令牌). 在POST请求中,客户端还可以提供额外的查询参数范围,以创建令牌,只允许您访问后端的特殊部分(例如,Google提供了许多不同的API,如Google云端硬盘,Google Mail等.如果客户端是邮件应用程序,则只需要访问Google Mail.这是一个额外的安全功能.). 响应返回令牌,客户端必须在每个请求的标头中将此令牌添加到其他资源.
将根据存储在数据库中的信息从后端验证令牌. 令牌资源还可以提供DELETE http方法,以允许用户在到期时间结束之前删除现有令牌.到期超时后,令牌将自动从后端数据库中删除. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |