【发布时间】:2018-03-21 14:01:54
【问题描述】:
我的项目包括一个 Web 应用程序、一个移动应用程序和一个 REST API 模块。
该移动应用程序是使用 Ionic 3 for android 制作的,并使用一个 REST API,该 API 位于带有 https 的服务器上的 example.com/api.php 之类的地址。 API 可以访问 MySQL 数据库。
对于访问 API 的用户,我必须创建登录/访问 API 功能/注销,因为他们已经在 Web 应用程序中创建了帐户。
主要关注的是实现安全登录。这意味着,如果有人试图在未经授权的情况下访问我的 API(知道地址、函数名称或使用的参数名称)以接收错误消息。为了访问 API,您必须登录并有权访问某个部分(我有多个访问级别)。 但是如何检测访问我的 REST API 的用户是否已登录并拥有适当的权限?
计划:
对于登录步骤 为了访问 REST API,我必须在应用程序中使用用户名/密码登录。我检查凭据是否正确(如果用户存在,那么我确定访问级别)并在必要时返回带有用户 ID 和其他参数(令牌)的 JWT。将 JWT 存储在手机本地存储中。
-
保护对 REST API 函数的访问 问题是:我该怎么做?如何从我的 REST API 访问安全功能?
- 对于我向 REST API 发出的每个请求,我是否也应该从本地存储发送令牌并在服务器端进行验证?
- 如何在服务器上执行验证?我是否将令牌存储在设备和服务器上并针对每个请求进行比较?
非常感谢!
【问题讨论】:
-
有很多方法可以做到这一点,包括注册用户、使用令牌等。在 Stack Overflow 上,您应该展示您尝试过的内容和无效的内容。有关如何发布问题的建议,请参阅 stackoverflow.com/help/mcve。像这样的问题往往被认为是广泛的或基于意见的,因为有很多方法可以做你正在尝试的事情。过去我使用过令牌方法,您在其中登录,为所有 REST 请求提供该令牌,服务器验证该令牌是否仍然有效,如果是,则执行请求。