如何使用Node.js和Sequelize设置基于角色的身份验证API? sequelize orm

问题描述 投票:2回答:1

Node.JS API using as an


目前我正在工作。我正在寻找一种集成基于角色的身份验证的正确方法。我在Heroku.com上有一个反应Web应用程序,这是为我们的客户购买我们的产品。 (预约管理系统)。

除了网络应用程序,我们还有一个iOS和Android应用程序,这是为每个客户的客户。

API登录应该如下工作:

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

MySQL数据库设计:


MySql database design picture

说明数据库设计:


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

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

  • 我如何使用实现这一点?
  • 我如何检查角色/帐户类型? (客户||员工)
  • 我应该在数据库中有预定义的组吗? (像CEO这样的默认值)
mysql node.js sequelize.js
1个回答
0
投票

解决方案如下:

我如何使用sequelize和node.js实现这个?

在与Employee建立关系之前,首先需要在数据库中创建一个User实体。我这样做是这样做的:

Create a user following by creating an 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);
  });

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

我通过分离前端(本机应用程序)和Web应用程序路径来完成此操作:

  • / API /网络/寄存器
  • / API /应用程序/寄存器

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

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

© www.soinside.com 2019 - 2024. All rights reserved.