Node + Express:根据页面和用户types的多种authentication策略

我是新来的节点,我想开始build立以下应用程序:

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

所以有四个数据库:

  1. pipe理员
  2. 用户
  3. 企业
  4. stream程

和三种types的用户:

  1. pipe理员=我(身份validation:用户名+密码)
  2. 商业(authentication:用户名+密码)
  3. 用户(authentication:脸书)

pipe理员应该拥有对所有数据库的CRUD权限。 企业只能对他们自己的configuration文件(提供服务)执行CRUD并更新相关stream程。 用户可以对正在执行的进程执行CRUD。

我读了很多npm模块,比如everyauth,mongoose-auth,passport,但是我很难理解他们与MongoDB等数据库的关系,尤其是当我有三种不同的权限和四种数据库的用户时。 我不知道页面可以检查三种不同types的cookies。

我应该创build三个不同的login和regestration系统? 如果是的话,怎么样?

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


护照需要以下用户名和密码configuration:

我不明白的是:

  1. 数据库在哪里?
  2. 我如何连接一个我可以访问的mongodb数据库?
  3. app.get()应该如何将用户redirect到相应的login页面?
  4. 我怎样才能实现这三个不同的login页面(adminLogin,businessLogin,userLogin)与三个相应的数据库(pipe理,业务,用户)?
  5. 我如何检查在三个不同的主页(adminHome,businessHome,userHome)上是否有正确types的Cookie?

我的build议是:

  1. 使用“快递”。
  2. 使用“护照”。 需要注意的是,“mongoose-auth”build立在“everyauth”之上,运行良好,但我喜欢“护照”的“策略”概念的灵活性,“明示”整合更好。 您可以使用任何数据库/方法(如LDAP)与Passport本地策略来存储凭据,这在护照教程中进行了解释。 此外,护照Facebook的战略已经定义并准备使用。
  3. 如果可能的话,为这三个用户组中的每一个分别设置快速路由(URL)。 在相同的路由上pipe理多个身份validation策略会变得非常复杂且不可靠。
  4. 企业或用户不太可能需要直接访问数据库。 因此数据库将只需要一个Web服务器到数据库服务器的连接。 因此,如果您的Web服务器是安全的,您可能根本不需要数据库身份validation,即使您确实需要它,该连接也仅适用于pipe理员。 但是,您应该阅读这些Mongo安全build议 ,以了解潜在的安全问题。