keystonejs - Keystone.js 6 访问被拒绝 adminMeta
问题描述
我想在Connect上播种数据,但我拒绝访问,使用此查询:
{
keystone: keystone {
adminMeta {
lists {
key
description
label
singular
plural
path
fields {
path
}
}
}
}
即使我使用 sudo, context.sudo().graphql.raw我也有这个错误:
[
Error: Access denied
at /Users/sidalitemkit/work/web/yet/wirxe/wirxe-app/node_modules/@keystone-next/admin-ui/system/dist/admin-ui.cjs.dev.js:552:19
at processTicksAndRejections (node:internal/process/task_queues:94:5)
at async Promise.all (index 0)
at async Promise.all (index 0) {
locations: [ [Object] ],
path: [ 'keystone', 'adminMeta' ]
}
]
这是我的配置:
export default auth.withAuth(
config({
db: {
adapter: 'prisma_postgresql',
url:
'postgres://admin:aj093bf7l6jdx5hm@wirxe-app-database-do-user-9126376-0.b.db.ondigitalocean.com:25061/wirxepool?schema=public&pgbouncer=true&sslmode=require',
onConnect: initialiseData,
},
ui: {
isAccessAllowed: (context) => !!context.session?.data,
},
lists,
session: withItemData(
statelessSessions({
maxAge: sessionMaxAge,
secret: sessionSecret,
}),
{ User: 'email' },
),
}),
);
我发现当我这样做时:
isAccessAllowed: (context) => true
它正在工作
这里有任何建议
解决方案
context.sudo()
禁用访问控制。您的查询可能存在一些问题。isAccessAllowed: (context) => true
与 admin-ui 相关,与 graphql 的后端实现无关。这可能是一个错误,请在 repo 中打开一个错误。他们应该能够快速修复它。
我没有看到样品initialiseData
来尝试自己。此外,如果您尝试访问一些不存在的项目,那么 graphql 的设计也是如此,即使没有访问控制(所有访问权限设置为true
),它也可能会给您拒绝访问错误。
还有另一个 api 更容易创建初始项目。您应该使用新的列表 api,可以这样context.sudo().lists.<ListName>.createOne
或createMany
像这样使用
const user = await context.sudo().lists.User.createOne({
data: {
name: 'Alice',
posts: { create: [{ title: 'My first post' }] },
},
query: 'id name posts { id title }',
});
或者
const users = await context.lists.User.createOne({
data: [
{
data: {
name: 'Alice',
posts: [{ create: { title: 'Alices first post' } }],
},
},
{
data: {
name: 'Bob',
posts: [{ create: { title: 'Bobs first post' } }],
},
},
],
query: 'id name posts { id title }',
});
有关更多详细信息,请参阅其预览文档中的List Items API和Database Items API。
推荐阅读
- c# - 如何显示列表
在数据表中水平? - eclipse - 我可以阻止 STM32CubeIDE (Eclipse) 自动将文件添加到项目吗?
- javascript - 从文件加载人脸时face-js不匹配
- qt - 设置内容方向会改变弹出窗口出现时的变暗效果
- python - 在不同的文件上调用 Tkinter GUI 框架类
- sql-server - 如何在 SQL Server 中添加分数?
- kubernetes - 使用远程呈现在 K8S pod 中调试 java 应用程序
- azure-monitoring - Azure 中的 Azure Sentinel 替代方案
- scala - 如何在 Scala 2 中使用 Scala 宏减少样板代码?
- javascript - 库中的 React Router 问题 - 使用外部元素