如何在 KeystoneJS 5 中为用户分配管理员权限?
How does one assign Admin rights to a user in KeystoneJS 5?
如何在 Admin UI 中为用户分配 Admin 状态?
我已经阅读了身份验证指南和访问控制指南,但我不明白 KeystoneJS 中“owner”和“admin”的区别。创建用户时,如何分配该用户管理员权限?您需要如何设置用户列表以允许这样做?那什么是“拥有者”呢?
KeystoneJs 访问控制是声明式的,您拥有完全的控制权,Keystone 对此不做任何假设。
Admin:简而言之,您可能会认为 Admin 意味着用户可以访问 Admin-UI 应用程序。但 Admin UI 应用程序也使用某种访问控制方法受到限制。
默认情况下所有人都可以访问管理员 ui,您可以通过在 Admin UI app constructor option. 中使用 isAccessAllowed
属性 来限制它
从上面 link 示例:
new AdminUIApp({
/*...config */
isAccessAllowed: ({ authentication: { item: user, listKey: list } }) => !!user && !!user.isAdmin,
}),
上面这个列表项通常来自 "User" 列表,定义在 Auth Strategy
const authStrategy = keystone.createAuthStrategy({
type: PasswordAuthStrategy,
list: 'User',
config: {
identityField: 'username', // default: 'email'
secretField: 'password', // default: 'password'
},
});
...
module.exports = {
keystone: new Keystone(),
apps: [
new GraphQLApp(),
new AdminUIApp({
adminPath: '/admin',
authStrategy,
isAccessAllowed: ({ authentication: { item: user, listKey: list } }) => !!user && !!user.isAdmin,
}),
],
};
所有者:keystone 没有定义所有者,您所做的就是根据博客 post 的声明创建所有权权利,作者是所有者,基于这种区别,您可以允许 post 作者进行某些操作,例如编辑和提交以供批准。
所有这些都进入访问控制 api,当您创建访问控制定义时,他们会评估函数并决定是否允许该操作。您可以在 https://github.com/MadeByMike/keystone-access-control-demo and more advanced one in their test suit here - https://github.com/keystonejs/keystone/blob/master/test-projects/access-control/index.js
中查看其工作原理的完整示例
如何在 Admin UI 中为用户分配 Admin 状态?
我已经阅读了身份验证指南和访问控制指南,但我不明白 KeystoneJS 中“owner”和“admin”的区别。创建用户时,如何分配该用户管理员权限?您需要如何设置用户列表以允许这样做?那什么是“拥有者”呢?
KeystoneJs 访问控制是声明式的,您拥有完全的控制权,Keystone 对此不做任何假设。
Admin:简而言之,您可能会认为 Admin 意味着用户可以访问 Admin-UI 应用程序。但 Admin UI 应用程序也使用某种访问控制方法受到限制。
默认情况下所有人都可以访问管理员 ui,您可以通过在 Admin UI app constructor option. 中使用 isAccessAllowed
属性 来限制它
从上面 link 示例:
new AdminUIApp({
/*...config */
isAccessAllowed: ({ authentication: { item: user, listKey: list } }) => !!user && !!user.isAdmin,
}),
上面这个列表项通常来自 "User" 列表,定义在 Auth Strategy
const authStrategy = keystone.createAuthStrategy({
type: PasswordAuthStrategy,
list: 'User',
config: {
identityField: 'username', // default: 'email'
secretField: 'password', // default: 'password'
},
});
...
module.exports = {
keystone: new Keystone(),
apps: [
new GraphQLApp(),
new AdminUIApp({
adminPath: '/admin',
authStrategy,
isAccessAllowed: ({ authentication: { item: user, listKey: list } }) => !!user && !!user.isAdmin,
}),
],
};
所有者:keystone 没有定义所有者,您所做的就是根据博客 post 的声明创建所有权权利,作者是所有者,基于这种区别,您可以允许 post 作者进行某些操作,例如编辑和提交以供批准。
所有这些都进入访问控制 api,当您创建访问控制定义时,他们会评估函数并决定是否允许该操作。您可以在 https://github.com/MadeByMike/keystone-access-control-demo and more advanced one in their test suit here - https://github.com/keystonejs/keystone/blob/master/test-projects/access-control/index.js
中查看其工作原理的完整示例