3 回答
TA贡献1869条经验 获得超4个赞
为了实现RESTful,每个HTTP请求应自行携带足够的信息,以便其接收者对其进行处理,以使其与HTTP的无状态本质完全协调一致。
好的,我知道每条消息都会自动完成HTTP身份验证-但是如何?
是的,用户名和密码随每个请求一起发送。这样做的常用方法是基本访问身份验证和摘要访问身份验证。是的,窃听者可以捕获用户的凭据。因此,将使用传输层安全性(TLS)加密所有发送和接收的数据。
拥有一个接受GET请求的REST服务(例如,/ session)是否会很糟糕,您将在其中传递用户名/密码作为请求的一部分,如果身份验证成功,则返回一个会话令牌,这可能然后与后续请求一起传递?从REST的角度来看这是否有意义,还是缺少这一点?
因为它带有状态,所以它不是RESTful的,但是它很常见,因为它为用户提供了便利。用户不必每次都登录。
您在“会话令牌”中描述的内容通常称为登录cookie。例如,如果您尝试登录到Yahoo !!帐户中有一个复选框,上面写着“让我保持登录状态2周”。这实际上是(用您的话)说:“如果我成功登录,则使我的会话令牌存活2周。” Web浏览器将随您要求的每个HTTP请求一起发送此类登录cookie(可能还有其他)。
TA贡献2011条经验 获得超2个赞
REST服务要求对每个HTTP请求进行身份验证并不罕见。例如,Amazon S3要求每个请求都具有从用户凭证,要执行的确切请求以及当前时间派生的签名。该签名易于在客户端进行计算,可以由服务器快速验证,并且对于拦截该签名的攻击者使用有限(因为它基于当前时间)。
TA贡献1821条经验 获得超6个赞
许多人不太清楚REST原理,使用会话令牌并不意味着您总是有状态,每个请求发送用户名/密码的原因仅用于身份验证,并且用于发送令牌(通过登录生成)流程)只是为了确定客户端是否具有请求数据的权限,只有在使用用户名/密码或会话令牌来确定要显示的数据时,您才违反REST的要求!取而代之的是,您只能将它们用于衰弱(显示数据或不显示数据)
在您的情况下,我说是,这是RESTy,但请尝试避免在REST API中使用本机php会话,并开始生成自己的哈希令牌,这些令牌在确定的时间段内到期!
- 3 回答
- 0 关注
- 528 浏览
添加回答
举报