1

这对你们中的许多人来说可能是微不足道的,但我没有任何运气来理解我的用例的正确流程。我正在为我们的移动应用程序(IOS 和 Android)构建一个 API,并且与大多数 Web 应用程序一样,该 API 具有某些功能/页面(就网站而言)只能由登录用户访问。由于 API 构造中通常不鼓励会话,因此我想知道如何在 API 中跟踪此类内容。我的问题是,我如何识别:

  1. 用户从客户端登录。因此,当用户通过发送他/她的用户名和密码登录时,服务器端在从数据库验证后授权用户。在这一点上,我应该向客户发送什么,它需要向我发送每个请求以供将来识别?
  2. 确保我收到对真实用户的请求……例如,用户 A 不能询问用户 B 的信息。换句话说,我的想法是,如果我基于 UserID(或某些令牌,因为它也必须进行一些加密)做事,那么有人可能会以某种方式破坏我的安全性并要求其他用户 ID 的内容......如何我要确保这个吗?

本质上,我正在寻找一些以无状态方式维护状态的指导。

4

2 回答 2

1

在用户成功通过身份验证后尝试发送 session_id。这可能是根据当前时间戳加盐的 user_name 创建的 md5 哈希值。

在服务器端我可以创建一个表 session_data(session_id, user_id, last_access_time, session_data),它将 session_id 映射到用户。last_access_time 过时后,会话将过时。

这种方法对于激烈的用户交互并不完美,因为您必须在每次请求后更新 session_data。

在这种情况下,这样的表可以在任何快速存储中移动。

于 2014-12-15T13:34:22.153 回答
0

API开发中没有登录状态等概念。这就是为什么它是无状态的。您必须对每个请求进行身份验证(因此在每个请求中发送用户名和密码)。

注意:您可以拥有会话,但它由 REST 客户端维护,因此 API 对它一无所知。

于 2014-12-15T16:07:28.457 回答