如果我有:用户,则需要使用api rest登录。最好的方法是什么?
1 /用户/ ID /密码
2 / users?id = id&password = pass
如果使用第二个选项,则需要验证是否有get参数。如果不是,它将返回所有结果。
这不是我现在想要的答案: REST API登录模式
您添加的链接是有效的,REST API是无状态的,因此它们无法以传统方式登录,您必须将客户端会话存储在客户端。如果使用HTTP,则无需登录。如果您不这样做,那么您的API将不安全,因此使用密码将没有任何保护。我认为就这些。
如果要同时保持无状态并发送令牌,则必须在服务器上签名例如用户ID。因此,在下一个请求中,您既可以发送用户ID和签名,也可以发送电子邮件和密码。这样,服务器将知道您已较早登录到该用户ID所属的帐户。我不建议您使用URI发送敏感数据。最好将请求正文与POST一起使用。URI结构取决于您的喜好,我将使用以下形式:
POST /users/1/tokens/ {email: "..", password: ".."}
201 {id: 1, expires: "..", signature: ".."}
Run Code Online (Sandbox Code Playgroud)
请注意,您必须发送所有已签名的变量,因此,id,到期时间(由服务器添加),可能的ip地址,随机数等……您不得在服务器上存储任何内容(包括令牌),否则通信将处于有状态。
我不是安全专家,但是我认为在大多数情况下此解决方案都没有意义,因此您需要以某种方式说明理由,为什么您的API需要它。例如,它用于签署来自第三方客户的每个请求。如果无法证明其合理性,我建议您使用默认方法,即使用HTTPS,在客户端登录并根据每个请求发送带有电子邮件和密码的HTTP授权标头。
| 归档时间: |
|
| 查看次数: |
2633 次 |
| 最近记录: |