javascript - 将 Auth0 身份验证与现有用户数据库集成

标签 javascript mysql reactjs auth0

我需要将 Auth0 集成到我们的项目 (Reactjs/Hapijs/MySQL) 中。我查看了文档,他们有很多示例,这很好,但是,我找不到任何与我如何使用现有用户数据库相关的信息。

在我的应用程序中,我有用户,这些用户可以有一个或多个项目。使用我们当前使用的授权,用户登录,我检查他拥有哪些项目并将其发送到 React 应用程序。

我丢失了一份说明如何使用 Auth0 并且仍然能够在我的数据库中检查用户拥有的项目的文档。

我对它应该如何工作的想法(我可能是错的):

  1. 用户向我们的服务器发送用户名和密码
  2. 我们的服务器向 Auth0 发出请求(使用提供的凭据)
  3. Auth0 使用一些 token
  4. 回复我们的服务器
  5. 我们查看数据库中的用户表并尝试验证该用户是否存在
  6. 如果匹配,那么我们只需查找(就像我们已经做的那样)用户项目。

这是它应该的工作方式吗?

最佳答案

对于您希望将 Auth0 与已有用户数据库的应用程序集成的场景,有几个选项可用。您可以:

  1. 继续 use your existing store
  2. 逐步migrate your users from your custom store到 Auth0 商店

您没有明确提及它,但从您的预期流程来看,您似乎想要实现第一个选项。 您可以遵循特定的文档来解释如何设置自定义数据库连接,请参阅 Authenticate Users with Username and Password using a Custom Database 。它提到了 MySQL,但也支持其他数据库服务器,并且有许多模板可让您快速设置。

完成此操作后,最终流程如下:

  1. 使用 Auth0 身份验证库(Lock)或您的自定义 UI,您将要求用户提供其凭据
  2. Lock 或您的自定义 UI 将凭据提交给 Auth0 身份验证 API
  3. Auth0 身份验证 API 通过调用针对您的自定义数据库执行的脚本来验证凭据(这些脚本是您在配置数据库连接时提供的)
  4. 如果凭据有效,身份验证 API 将向调用应用程序返回一个 token ,其中包含用户信息并证明用户是他所说的人。

您需要提供的脚本如下,但只有一个是必填的:

  • 登录脚本(每次用户尝试登录时执行)(强制)
  • 创建用户脚本
  • 验证电子邮件脚本
  • 更改密码脚本
  • 删除用户脚本

只有当你想通过 Auth0 库提供相关功能时才需要可选脚本,如果只需要登录就可以跳过它们。在有效用户的情况下,登录脚本也是您返回用户个人资料信息的地方,例如,理论上您可以在用户个人资料中包含他们拥有的项目。

关于javascript - 将 Auth0 身份验证与现有用户数据库集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40102550/

相关文章:

mysql - MySQL 查询中的未知列

javascript - ES6 解构为 "this"

javascript - Ngrx/store - 使用类的 Action 创建者与使用工厂功能的 Action 创建者?

javascript - Raphael JS 嵌套转换

javascript - spring mvc 如何从网页内容加载js和css文件

mysql - 升级到 ubuntu 12.04 后无法在 Rails 中运行我的服务器

python - 尝试在 python 中上传到 MySQL 数据库时出现完整性错误

javascript - Greasemonkey 脚本自动选择并单击值/选择器中包含非英文字符的特定按钮?

javascript - React 中出现解析错误

javascript - React/Mobx - 组件正在重新渲染,但未调用 componentWillReceiveProps()