Node + Express:根据页面和用户类型的多种身份验证策略

时间:2013-01-07 22:52:17

标签: node.js mongodb authentication login express

我是节点新手,我想开始构建以下应用程序:

应用程序应该是某些企业提供的服务目录。用户应该能够启动和跟踪流程的状态以及列出的服务提供商。

所以有四个数据库:

  1. 管理员
  2. 用户
  3. 企业
  4. 过程
  5. 三种类型的用户:

    1. Admin = Me(身份验证:用户名+密码)
    2. 业务(身份验证:用户名+密码)
    3. 用户(身份验证:脸书)
    4. 管理员应具有对所有数据库的CRUD权限。企业只能对自己的配置文件(提供的服务)执行CRUD并更新相关流程。用户可以对正在进行的流程执行CRUD。

      我阅读了很多关于npm模块的内容,例如everyauth,mongoose-auth,passport,但我很难理解他们与mongodb等数据库的关系,特别是当我有三种不同权限和四种数据库的用户时。我不知道页面如何检查三种不同类型的cookie。

      我应该创建三种不同的登录和重新授权系统吗?如果是,怎么样?

      有人可以帮助我......不用代码......但是有一个概念或相关的教程。


      Passport需要following用户名&密码配置:

      我无法理解的是:

      1. 结果数据库在哪里?
      2. 如何连接我以后可以访问的mongodb数据库?
      3. app.get()应该如何将用户重定向到相应的登录页面?
      4. 如何在三个不同的登录页面(adminLogin,businessLogin,userLogin)中实现此功能,并具有三个相应的数据库(管理员,业务,用户)?
      5. 如何检查三个不同主页(adminHome,businessHome,userHome)上是否有正确类型的cookie?

1 个答案:

答案 0 :(得分:2)

我的建议:

  1. 使用“express”。
  2. 使用“护照”。请注意,“mongoose-auth”建立在“everyauth”之上,它们可以正常工作,但我喜欢“护照”中“策略”概念的灵活性,而“快速”整合则更好。您可以使用任何带有Passport Local策略的数据库/方法(如LDAP)来存储凭据,这在护照教程中有说明。此外,Passport Facebook策略已经定义并可以使用。
  3. 如果可能的话,为三个用户组中的每一个分别设置快速路由(URL)。在相同路由上管理多个身份验证策略看起来很复杂且不可靠。
  4. 企业或用户极不可能需要直接访问数据库。因此,数据库只需要一个Web服务器到数据库服务器连接。因此,如果您的Web服务器是安全的,您可能根本不需要数据库身份验证,即使您确实需要它,该连接也仅适用于管理员。但是,您应该阅读这些Mongo security recommendations以了解潜在的安全问题。