REST API 身份验证

标签 rest

我正在构建一个将托管在服务器上的应用程序。我想为应用程序构建一个 API,以便于与任何平台(Web 应用程序、移动应用程序)进行交互。我不明白的是,当使用 REST API 时,我们如何对用户进行身份验证。

例如,当用户登录后想要创建论坛主题时。我如何知道用户已经登录?

最佳答案

例如当用户登录时。现在假设用户想要创建一个论坛主题,我如何知道用户已经登录?

想一想 - 必须有一些握手告诉您的“创建论坛”API 当前请求来自经过身份验证的用户。由于 REST API 通常是无状态的,因此状态必须保存在某处。使用 REST API 的客户端负责维护该状态。通常,它采用某种 token 的形式,自用户登录以来就一直在传递。如果 token 是好的,那么您的请求就是好的。

检查 Amazon AWS 如何进行身份验证。这是从一个 API 向另一个 API“推卸责任”的完美示例。

*我想在我之前的回答中添加一些实际的回应。尝试 Apache Shiro(或任何身份验证/授权库)。最重要的是,尽量避免自定义编码。一旦集成了您最喜欢的库(顺便说一句,我使用 Apache Shiro),您就可以执行以下操作:

  1. 创建登录/注销 API,例如:/api/v1/loginapi/v1/logout
  2. 在这些登录和注销 API 中,使用您的身份执行身份验证 用户存储
  3. 结果是一个 token (通常为 JSESSIONID),该 token 被发送回客户端(网络、移动设备等)
  4. 从此时起,您的客户调用的所有后续电话 将包含此 token
  5. 假设您的下一次调用是对名为 /api/v1/findUser 的 API
  6. 此 API 代码要做的第一件事是检查 token (“is 该用户已通过身份验证吗?”)
  7. 如果返回的答案为“否”,则抛出 HTTP 401 状态 回到客户端。让他们来处理吧。
  8. 如果答案为"is",则继续返回所请求的用户

关于REST API 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7999295/

相关文章:

java - Application/JSON 是 Restful Web 服务中不支持的媒体类型

php - 是否存在 MySQL、PHP、JSON 框架?

json - 使用关键 HAWQ 的数据即服务

node.js - 如何在node js下使用googleapis获取完整的个人资料信息?

Java:从InvocationContext获取拦截器的注解参数

rest - 如何通过postman调用Azure Search相关的REST API?

java - 提高大数据量插入速度

.net - 从 ASP.NET 连接到远程 MongoDB 实例

c++ - Delphi/C++Builder 10.2.3 RESTRequest POST

c# - C# 中的 Twitter 服务代理