Authentication 如何在keystonejs中添加具有登录功能的不同模型?

Authentication 如何在keystonejs中添加具有登录功能的不同模型?,authentication,keystonejs,Authentication,Keystonejs,我正在使用KeystoneJS 0.3.19构建一个应用程序,允许用户登录并访问所有应用程序功能。应用程序需要使用稍微不同的用户模型分离用户类别,因为每种类型支持不同的功能。我浏览了许多涉及用户模型定义、用户创建、登录和登录的文件,并做了一些更改。服务器运行良好,在本地主机上运行网站时,我更改的大部分代码也会执行,直到在keystone/lib/session.js中遇到persist函数,我想在其中设置一个条件,以查看发出请求的用户类型,并为要使用的变量分配适当的值。我使用req.user、r

我正在使用KeystoneJS 0.3.19构建一个应用程序,允许用户登录并访问所有应用程序功能。应用程序需要使用稍微不同的用户模型分离用户类别,因为每种类型支持不同的功能。我浏览了许多涉及用户模型定义、用户创建、登录和登录的文件,并做了一些更改。服务器运行良好,在本地主机上运行网站时,我更改的大部分代码也会执行,直到在keystone/lib/session.js中遇到persist函数,我想在其中设置一个条件,以查看发出请求的用户类型,并为要使用的变量分配适当的值。我使用req.user、req.body.user来确定这一点,这两种方法显然都是错误的,因为它在运行时是未定义的

我更改的文件是:

keystone/admin/api/session/signin.js

keystone/lib/session.js

keystone.js, to list the model in Admin UI

keystone.js/templates/views/signin.jade, select the type of user for login
我确定persist函数的用户类型的方法是错误的,正确的方法是什么

我还需要做些什么才能得到这个结果


我已经创建了新模型,并且在session.js出现此错误之前检查时,它会反映在管理UI上。

我不确定我是否得到了您想要的结果,但对于我来说,我扩展了字段的用户模型(我使用的是Keystone 0.4 jFYI)

所以接下来您可以从代码中检查用户访问级别(我使用的是pug引擎)

另一个选项是,您可以将Relationship字段的现有用户模型扩展到一个模型,该模型由所需的字段、操作等组成,并使用代码中接下来的ref字段

accessLevel: {
  type: Types.Select,
  label: "Access level",
  index: true,
  numeric: true,
  options: [
    { value: 1, label: "admin" },
    { value: 2, label: "cool_user" },
    { value: 3, label: "soopa_user" }
  ]
}
if user && user.accessLevel == 2
  do something cool