【问题标题】:Authenticate two different users from different models using nodejs/express/mongoose/jwt使用 nodejs/express/mongoose/jwt 对来自不同模型的两个不同用户进行身份验证
【发布时间】:2021-08-10 19:30:03
【问题描述】:

我正在开发一个 MERN 应用程序,学生可以在其中登录并填写他们的申请,以及可以批准申请和执行其他管理工作的管理员用户(具有不同角色)。因此,我决定为用户(学生和用户)提供两种不同的模型(mongoDB 集合),因为学生有额外的数据需要存储在数据库中。验证的最佳方法是什么?以及构建路线的最佳方式是什么?

【问题讨论】:

    标签: node.js reactjs mongodb mongoose jwt


    【解决方案1】:

    首先给定您的场景,这很简单,当他们尝试登录时,使用某些复选框或某种机制询问他们希望以用户身份登录或以学生身份登录,然后基于此运行您的登录逻辑。

    但是,如果您只有一个用于身份验证的模型(例如用户)然后有一个字段 user_role 来控制他们的权限/授权,那真的很有意义。

    对于路由,您可以检查中间件,根据他们是否可以访问它的 user_role。

    【讨论】:

      【解决方案2】:

      只处理一个模型(用户)并添加一个角色字段会容易得多。 因此,您只需查询一个集合即可在登录过程中找到用户。 如果您将 Express 与 JWT 一起使用,您必须编写一些中间件来处理令牌并将请求传递给处理程序或使用 401 中止它,您只需添加一些 if 语句来检查令牌有效负载中的角色是否是学生或管理员

      【讨论】:

      • 在应用程序中,学生填写了一份表格(申请)。如果是这样,我应该将这些数据添加到用户模式中,还是创建另一个集合(如学生或应用程序)来存储这些数据会更好。以及我的 API 结构如何?
      • mongo 允许您同时使用子文档和类似于 SQL 的“规范化”。我会选择第二个选项,例如另一个集合
      猜你喜欢
      • 1970-01-01
      • 2016-05-23
      • 2020-12-23
      • 2019-08-18
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 2020-12-10
      相关资源
      最近更新 更多