【问题标题】:How to setup a Role based authentication API using Node.js and Sequelize?如何使用 Node.js 和 Sequelize 设置基于角色的身份验证 API?
【发布时间】:2017-12-09 17:41:41
【问题描述】:

Node.JS API 使用 作为


目前我正在处理 中的。我正在寻找一种合适的方式来集成基于角色的身份验证。我在 Heroku.com 上托管了一个 React Web 应用程序,它适用于购买我们产品的客户。 (预订管理系统)。

除了网络应用程序之外,我们还有一个 iOS 和 Android 应用程序,供每个客户的客户使用。

API 登录应该如下工作:

  • 作为客户的用户应该无法登录到 Web 应用程序。
  • 员工用户不能登录移动应用程序。

MySQL 数据库设计:


解释数据库设计:


  • 用户既可以是员工也可以是客户,不能同时是两者。
  • 每个员工都属于一个组。 (想想营销、销售等)
  • 每个组都有特定的权限。 (例如销售可以查看平均收入)
  • 原理相同

重要提示:未来模型将包含一个包含公司特定组的额外表格。

问题

  • 我将如何使用 来实现这一点?
  • 如何检查角色/帐户类型? (客户 || 员工)
  • 我应该在数据库中预定义组吗? (如 CEO 等默认值)

【问题讨论】:

  • 您需要编写一个中间件来检查用户的组,看看他们是否有权做任何他们想做的事情。 Sequelize 将为您提供登录的用户(如果您想要它的角色和组)。然后由你来检查它们是否被允许。
  • @yBrodsky 感谢您的回复。好的,所以我已经启动并运行了 middelware 以检查用户组。目前的问题是使用 Sequelize 进行设置。如何设置用户 > 客户 > 组 > 组权限 > 权限,例如在注册 HTTP 调用中?
  • 好吧,你可以在中间件中做到这一点。了解用户后,只需查找所有其他数据(组、权限等)并查看他们是否尝试访问不应访问的内容。
  • 您可以在 Discord/Skype 上聊天吗?我想更详细地解释一下。
  • 好吧,如果你有两个注册源做不同的事情,你很可能有两个不同的端点(即/register/web/register/app)。是的,你可以创建用户,一旦你有了它的 ID,就可以创建其他关系。

标签: sequelize orm api node.js sequelize node.js mysql node.js sequelize.js


【解决方案1】:

解决方法如下:

我将如何使用 sequelize 和 node.js 实现这一点?

您首先需要在数据库中创建一个用户实体,然后才能连接与 Employee 的关系。我是这样做的:


通过创建员工来创建用户关注


models.User.create({
    first_name: body.firstName,
    last_name: body.lastName,
    email: body.email,
    password: body.password
  })
  .then((user) => {
    return models.Employee.create({ user_id: user.id, group_id: 1 })
  })
  .then((employee) => {

    if(!employee) {
      return utils.createError(400, 'Could not create account');
    }

     return response.status(200).send(employee);
  })
  .catch(error => {
    response.status(400).send(error);
  });


如何检查角色/帐户类型? (客户 || 员工)

我通过将前端(本机应用程序)和网络应用程序路由分开来做到这一点:

  • /api/web/register
  • /api/app/register


我应该在数据库中预定义组吗?

答案是肯定的。为了注册第一个用户,我在数据库中添加了一个默认的 CEO 组。目前该模型正在发生大量变化,很快模型就会有所不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2019-04-23
    • 2020-01-23
    相关资源
    最近更新 更多