- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前,我只能以公共(public)用户身份运行查询,Strapi 会为我获取结果。但是,我想完全阻止对公共(public)用户的所有查询访问,只允许经过身份验证的用户(最好只允许一个特定用户)。
我知道我可以在 Roles & Permissions 插件中阻止查询访问,我也知道可以在 Content Types -> Users< 中使用自己的密码创建一个新用户/strong> 屏幕。其实我已经有了,它叫web
。现在,如何以该特定用户身份在我的 /graphql/
端点中执行查询?
最佳答案
GraphQL 端点不是通过 route
管理的,而是通过中间件管理的。所以政策体系不适用。
您将无法删除对此端点的访问权限。但是您可以通过更新 GraphQL 配置文件来禁用 GraphQL Playground GET/graphql
。这是执行此操作的文档 https://strapi.io/documentation/3.0.0-beta.x/guides/graphql.html#configurations
如果你想限制对 GraphQL 端点的访问,我建议你创建一个新的中间件,它将检查触发的端点是否是 /graphql
并检查经过身份验证的用户是否是你想要的。
这是创建中间件的文档 https://strapi.io/documentation/3.0.0-beta.x/advanced/middlewares.html
你的中间件看起来像那样
module.exports = strapi => {
return {
initialize() {
strapi.app.use(async (ctx, next) => {
const handleErrors = (ctx, err = undefined, type) => {
if (ctx.request.graphql === null) {
return (ctx.request.graphql = strapi.errors[type](err));
}
return ctx[type](err);
};
// check if it's a graphql request
if (ctx.request.url === '/graphql' && ctx.request.method === 'POST') {
if (ctx.request && ctx.request.header && ctx.request.header.authorization) {
try {
// get token data
const { id } = await strapi.plugins[
'users-permissions'
].services.jwt.getToken(ctx);
if (id === undefined) {
throw new Error('Invalid token: Token did not contain required fields');
}
// check if the id match to the user you want
if (id !== 'my-user-id') {
return handleErrors(ctx, 'You are not authorized to access to the GraphQL API', 'unauthorized');
}
} catch (err) {
return handleErrors(ctx, err, 'unauthorized');
}
} else {
// if no authenticated, return an error
return handleErrors(ctx, 'You need to be authenticated to request GraphQL API', 'unauthorized');
}
}
await next();
});
}
};
};
此代码将限制 my-user-id
对您的 GraphQL API 的访问。
要进行身份验证,您必须在 header 中发送 JWT。请按照此处的文档了解它https://strapi.io/documentation/3.0.0-beta.x/guides/authentication.html
关于strapi - 如何以经过身份验证的用户身份使用 GraphQL 查询 Strapi 后端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58096203/
是否可以在 Strapi 中同时使用两个不同的数据库,即 MongoDB 和 Redis? 我想通过 Redis 跟踪我的刷新 token ,而 Mongo 上的所有其他文档。 最佳答案 是的,但 S
目前我已经设法将帖子发布到 strapi,但我无法将帖子状态设置为草稿。我正在使用 graphql,并且突变中没有发布状态。我必须做什么? 谢谢。 最佳答案 我发现这样做的方法是在执行突变时将属性 p
这里是 strapi 测试新手 - 从 --quickstart 应用程序开始,添加管理员用户后,/admin/auth/register 总是重定向到/admin/auth/login(隐身,新浏览
我无法将数据输入到我在 strapi 的用户集合类型中创建的字段。 我想在 strapi 的用户集合中创建额外的字段,所以我从构建器创建了一些额外的字段,但是当尝试输入数据时,新创建的字段不可编辑。
我正在尝试配置 Strapi v3.0.0-alpha.19 服务器以能够发送电子邮件,专门用于重置忘记的密码。很难为此找到足够的文档,但我在 questions like this one 的回答中
我目前正在尝试针对前一段时间填充的现有数据库安装 Strapi 的全新安装。虽然我已经能够使用“strapi new new-project-name”构建一个指向现有数据库的新项目,并且可以通过“s
在管理面板中 - 我有一个内容类型 products ,它向我展示了数据库(MongoDB)中的所有产品 假设我想编辑一个 product当我点击 Save按钮,我想点击自定义 API/覆盖更新我的现
如何使用 --inspect=0.0.0.0:9229 启动 Strapi参数或任何其他方式将调试器附加到我的服务器? 这就是我可以用 alpha 版本管理它的方式,但是 server.js自测试版以
我正在使用 Strapi v3.0.0-beta.18.7 如何删除 内容类型 以及来自 DB 的相关表? 我尝试了下面的命令,但它没有删除数据库表。 DELETE http://localhost
假设我有一个 post具有以下 4 个字段的内容类型: title (字符串) content (字符串) slug (字符串) author (关系) 如何添加依赖于上述 4 个字段之一的值且用户不
我不明白 Strapi 电子邮件插件是如何工作的。:( 如果我只使用 Strapi-Sendmail,我如何通过 25 端口从 Localhost 发送邮件,以便我可以在本地测试我的 Strapi 是
如果我在 strapi.io 中使用文件上传,文件名将变为随机名称。有没有办法保留原始文件名(最终带有随机后缀)(例如用于 SEO)? 最佳答案 目前没有对上传插件进行自定义修改(扩展)。当前的系统已
我正在 Strapi 上构建自定义端点。对于这个端点,我需要有原始的正文内容。是否可以从 ctx 获得它?多变的? stripe : async(ctx) => { // Handle the
使用 Strapi 构建 API。喜欢它的大部分内容,但似乎访问管理界面是全有或全无的;对于只能添加/编辑内容的用户,您无法隐藏管理的更高级方面......?我错过了什么吗?这是怎么做的? 最佳答案
我想从数据库中另一条记录的克隆开始,而不必再次填写所有这些字段。目前这是非常乏味的,必须打开两个选项卡(一个带有现有记录,另一个带有新记录)并复制粘贴数据。 如何在 Strapi 中克隆/复制记录?
我是 strapi 和后端的新手。 我创建了一个名为 post 的内容类型,默认情况下可以通过此路由 /posts/:id 访问它。但是我也希望这篇文章可以通过这条路线访问 /posts/:slug
目前,我只能以公共(public)用户身份运行查询,Strapi 会为我获取结果。但是,我想完全阻止对公共(public)用户的所有查询访问,只允许经过身份验证的用户(最好只允许一个特定用户)。 我知
在 Strapi 4.0 中,我想在保存之前验证输入。所以我根据文档创建了 lifecycles.js 文件并添加了代码: module.exports = { beforeCreate(ev
在 Strapi 4.0 中,我想在保存之前验证输入。所以我根据文档创建了 lifecycles.js 文件并添加了代码: module.exports = { beforeCreate(ev
我正在为摄影师构建一个简单的作品集网站。我尝试显示的集合类型称为宠物图片,其中包含标题和图像字段。我可以使用异步函数调用 API,但是一旦我从 API 获得 JSON 数据,我就无法访问照片的 URL
我是一名优秀的程序员,十分优秀!