2014-05-07 59 views
2

我正在设计我的第一个RESTful API,并且对一些事情感到困惑。Restful设计,如何创建授权服务

我使用状态代码,名词和动词正确为止,所以POST到http://domain.com/api/contacts将创建一个新的联系人等

现在我设计我的登录表单,并不会使用HTTP认证,我将会获得一个json Web令牌并将其存储在cookie中。我的问题是这些..

1)什么名词用于登录服务,我假设api /登录将是错误的。我发布了一个用户名和密码,并希望登录发生,并发送一个JWT。我没有创建用户,也没有真正地获得用户,所以我不知道该怎么称呼它。

2)我读了另一个SO回答说,如果对API进行调用并且令牌无效(如果它在前端过期,那么调用永远不会进行),那么403是正确的状态码,但你如何分辨“登录令牌无效”和“登录有效但用户试图访问别人的内容”之间的区别。

3)如果用户正在登录并发送错误凭证,那么正确的状态码是什么?它似乎是401,但其他答案说不使用,因为浏览器会显示密码框。

任何帮助真的不胜感激。

回答

3
  1. POST /auth-tokens
  2. 如果返回与403响应的实体,您可以包括信息
  3. 如果用户通过张贴到AUTH-令牌登录,您可以返回一个403禁止。从the spec

服务器理解了请求,但拒绝执行。授权不起作用,请求不应重复。 [...]如果请求方法不是HEAD并且服务器希望公开为什么请求没有被满足,那么它应该描述在实体中拒绝的原因。

您可以使用该实体来解释登录失败的原因。

+0

准确地说,我正在寻找的信息,谢谢。 – jonhobbs