android - 使用 REST API 验证用户凭据?

标签 android api rest android-intent android-activity

我在我的网站上设置了一个 REST API,以便从我的数据库返回信息。

我现在正在我的应用程序上实现登录和注册。但是,我不确定如何处理验证用户凭据(检查电子邮件是否已注册,密码是否符合要求等)。

由于我的 REST API 不向公众开放,这样传递数据是否安全:

/users/verify/email/{email_address}
/users/verify/password/{password}

或者是否有更好(更安全)的方法来做到这一点?换句话说,如何在登录/注册时对用户进行身份验证和验证?

最佳答案

在 REST 中,您谈论的是资源。资源将通过其属性表达一些状态。

以您的示例为例,我会问自己:“为什么要验证电子邮件”、“为什么要验证密码”。因为您想验证用户是否可以注册。 因此,您的资源将不是电子邮件或密码,而是用户。

验证是一个 Action 。不适合 REST architecture 的东西.

您想验证什么?您想要注册一个新用户,但还要验证他是否被允许注册。因此,您将尝试在某些条件下将用户添加到您的用户集合中。在带有 HTTP 的 REST 中,这可以通过 POST 来完成,它的作用类似于 add(User)。然后,请求背后的逻辑可以对用户实现验证规则。

要发布数据,只需使用内容正文并使用标题获取更多信息。所以我将我的 API 更改为:

HTTP method: POST
Path: /users
Content-Type: application/json
Body:
{"email_address":"qsdfg@sdfgh.com", "password":"qlmkdjfmqlsk"}

这将您的 API 简化为用于添加用户的单个入口点。允许或拒绝注册用户可以通过使用 HTTP 状态代码和消息来传达。

当然,以明文形式发送密码不是一个好的做法,但您可以使用 SSL 或 TLS 设置安全连接以进行通信。

顺便说一句,在 URL 中发送敏感数据不是一个好习惯。服务器可以记录该 url,该 url 将向所有有权访问该日志的用户显示该用户的密码。

登录有点不同,但差别不大。

您需要一种资源,将用户与他与您的系统的对话唯一链接起来。

HTTP method: POST
Path: /authentication
Content-Type: application/json
Body:
{"email_address":"qsdfg@sdfgh.com", "password":"qlmkdjfmqlsk"}

回应

Status-Code: 200
Content: 
unique-id-to-my-user

身份验证可以调用您的用户 api 来执行规则,然后生成 id。

您可以使用 OAuth2 实现来处理这个问题。

关于android - 使用 REST API 验证用户凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32750637/

相关文章:

api - RESTful API - 处理嵌套关系

放心 + 模拟 MVC @ControllerAdvice

php - 从 authorize.net 获取交易详情

java - 带有属性值请求映射的 Spring Boot REST Controller 测试

android - getWindow().setBackgroundDrawable 拉伸(stretch)背景

android - 房间数据库查询返回空列表

javascript - Angular SC.get 中的 Soundcloud API 不暂停

javascript - 如何在谷歌图表中添加新的Y刻度

Java 列表过滤

android - 如何从 webview 获取 html 内容?