0

我将 Cloud9 与 Heroku 结合使用来启动 Web 应用程序。由于有限的编程技能和经验,我试图只专注于前端编码。所以我使用 Kinvey 作为后端和 Mandrill 来处理电子邮件。

该逻辑包含以下场景:注册用户可以允许任何其他人(不一定已注册)将元素添加到集合 (DB)。因此,使用该应用程序,注册用户可以键入其他人的电子邮件并请求该元素。电子邮件应包含一个 url。与重置密码 url 相同,但不适用于某个 DB 元素而不是密码。

如何使用当前的解决方案生成此 url?或者我一般如何轻松生成它?它会安全吗?

谢谢!!

4

1 回答 1

0

生成类似于密码重置的电子邮件验证的功能并不作为“现成”功能存在。您将需要自己实现它。然而,这并不像你想象的那么难。当然,这确实需要一些工作,所以我将介绍主要/高级要点。请注意,您不清楚此过程的确切结果,您说的是“请求数据库元素”。我假设这只是意味着获取一些数据,但是无论如何,以下许多要点仍然适用。

1) 用户触发向任何人发送电子邮件的功能。这很可能是(或应该是)在 Kinvey 端点中。因此,您使用生成电子邮件所需的相关数据调用端点。

2) 端点生成一个令牌。生成令牌的确切方法/算法需要自己实现。你可以在网上找到很多方法。

3)您将令牌保存在数据集合中。您还可以在此处保存时间戳,或使用生成的时间戳。

4) 你触发一封带有 URL 给用户的电子邮件(使用 Kinvey BL 模块发送电子邮件)。此 URL 已添加令牌。

5) 用户收到邮件,点击链接。它们现在被带到您需要创建的页面,并且在该页面上,您的代码会获取令牌。

6) 您现在必须向 Kinvey 发出请求以验证令牌。可以根据您的特定用例执行其他验证,但最简单的情况需要点击 Kinvey BL 端点。当然,您需要生成一个临时/通用用户来针对 Kinvey 进行身份验证。因此,在这一步中,注册并注册一个“自动生成的”用户。

7) 使用您的临时用户调用 Kinvey 端点,并将令牌传递给它。在 Kinvey 端点中,针对您的令牌集合执行查找(从步骤 #3 开始) - 以及任何其他自定义验证。如果令牌存在,请获取必要的数据并将其返回给用户。

重要提示:此时,任何自行注册的临时用户都可以执行上述所有步骤并访问他们想要的任何内容。关键是使用私有权限设置您的令牌和受保护的数据集合。这样,在第 7 步中,用户将无法验证令牌或访问集合。但是,在第 7 步中,您应该以主用户身份执行查找 - 使用您的主密钥 - 以验证令牌。如果成功,您将获取数据并将其返回给用户。

最后(简而言之) - 这意味着任何用户都可以生成一个令牌,该令牌与其他数据(集合/字段/记录、电子邮件地址等)相关联。那么只有知道令牌的人才能访问令牌所指的数据。由于数据是私有的,只有在后端运行并因此受到保护的主密钥才能验证它并将响应发回给用户。我知道一开始这似乎势不可挡,但如果你把它分解成合乎逻辑的步骤,它实际上是相当简单的。

于 2014-11-20T07:26:30.437 回答