这是一个概念性问题。
我有一个客户端(移动端)应用程序,需要支持对RESTful网络服务进行登录操作。由于该网络服务是RESTful的,这意味着客户端需要接受用户提供的用户名/密码,验证该用户名/密码并记住在所有后续请求中发送该用户名/密码。
该网络服务中的所有其他响应都以JSON格式提供。
问题是,当我查询网络服务仅了解特定用户名/密码是否有效时,该网络服务应该始终用返回JSON数据告诉我其是否成功或失败,还是应该在凭证正确时返回HTTP 200,在凭证错误时返回HTTP 401。
我之所以问这个问题是因为有些其他RESTful服务即使你只是询问凭据是否有效,也会使用401表示凭证无效。然而,我对401响应的理解是它们代表您没有合法凭证访问的资源。但是,登录资源应该可供任何人访问,因为登录资源的整个目的就是告诉您您的凭证是否有效。
换句话说,对于类似这样的请求:
myservice.com/this/is/a/user/action
如果提供了错误的凭据,应该返回401。但是像这样的请求:
myservice.com/are/these/credentials/valid
这个特定的URL(请求)无论有没有有效凭证都是授权的,因此不应该返回401错误。
我想听听大家对此的合理观点。处理此问题的标准方式是什么?这种处理方式在逻辑上是否正确?
authentication is required and has failed or has not yet been provided
所适用的情况,因为你不是在要求凭证的有效性,而是基于你提供的凭证来请求特定的资源。 - Cleric