Strapi - 限制用户仅获取与他相关的数据

2023-11-24

通常,登录用户会获取内容类型的所有条目。

我创建了一个“片段”内容类型(_id,name,content,users<<->>snippets)

<<->>表示“具有并属于许多”关系。

我创建了一些测试用户并提出请求: curl -H 'Authorization: Bearer eyJ...' http://localhost:1337/snippets/

主要问题:经过身份验证的用户应该只能看到分配给他的条目。相反,登录用户会获取所有片段,这很糟糕。

怎么可能修改fetchAll(ctx.query);查询考虑到这一点,所以它会做类似的事情fetchAll(ctx.state.user.id); at the /-路线->find-方法 ?

基本的查找方法在这里:

find: async (ctx) => {

    if (ctx.query._q) {
      return strapi.services.snippet.search(ctx.query);
    } else {
      return strapi.services.snippet.fetchAll(ctx.query);
    }
},

子问题:当我进行不记名令牌身份验证时,strapi 是否知道哪个用户已登录?


您可以在片段配置下设置 /snippets/me 路由。

该路由可以调用 Snippets.me 控制器方法,该方法将检查用户,然后根据用户查询片段。

So in api/snippet/config/routes.json会有类似的东西:

    {
      "method": "GET",
      "path": "/snippets/me",
      "handler": "Snippets.me",
      "config": {
        "policies": []
      }
    },

然后在控制器中(api/snippet/controllers/Snippet.js),你可以这样做:

  me: async (ctx) => {
    const user = ctx.state.user;    
    if (!user) {
      return ctx.badRequest(null, [{ messages: [{ id: 'No authorization header was found' }] }]);
    }

    const data = await strapi.services.snippet.fetch({user:user.id});  

    if(!data){
      return ctx.notFound();
    }

    ctx.send(data);
  },

然后,您将向经过身份验证的用户授予我路由的权限,而不是整个片段路由的权限。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Strapi - 限制用户仅获取与他相关的数据 的相关文章

  • strapi-api使用说明

    strapi controllers 返回项目中可用的控制器的对象 位于该 api controllers文件夹中的每个JavaScript文件都将被解析为该strapi controllers对象 由于这个对象 xff0c 您可以访问项目
  • koa设置静态资源以加载html页面

    koa是express之后又一个node框架 xff0c 它可以很方便的构建http服务 一般 xff0c 我们看到的koa是配合koa router路由来做服务端请求控制 xff0c 大部分是要么返回string xff0c 要么返回js
  • koa利用koa-views通过路由返回html页面

    前面一篇博客介绍了koa借助koa static依赖可以实现以静态资源的形式加载html xff0c 但是没有路由功能 xff0c 一般而言 xff0c 前后端分离之后 xff0c 路由控制是由前端控制 xff0c 也有一些不分离的项目 x
  • koa2的脚手架koa-generator使用

    我们在搭建项目的时候 xff0c 会使用一些脚手架 xff0c 今天我们使用koa2的脚手架koa generator 使用非常简单 首先 xff0c 我们需要全局安装 npm install g koa generator 创建项目 ko
  • CommonJS是啥东西嘞

    AMD AMD要用define定一个模块 define dep1 dep2 function dep1 dep2 return function 包目录 package json包 bin用于可的目 lib用于JavaScript的目 do
  • strapi的使用(二)-- Graphql

    一 Graphql 一种为你的API而生的查询语言 可以理解为动态api 一般来说我们都是在后端写好sql查询语句查询数据库数据 前端请求这个api返回的数据是固定的 而Graphql可以让前端去决定请求什么字段回来 二 strapi安装G
  • AI,v3,百度人脸识别库上传---node

    config有必要的grant type client id client secret var https require https var request require request var qs require querystr
  • 【nodejs进阶之旅(2)】:使用koa2+mysql 实现列表数据分页

    1 展示效果 分页 2 分页主要字段 分页主要字段包括 pageSize 每页条数 pageNum 第几页 startRow 当前开始页编号 endRow 当前结束页编号 total 总数量 主要是根据前端分页的参数 进行处理后 返回前端正
  • 如何在graphql和strapi中传递JSON对象

    当我手动编写突变查询 在 graphql 插件中 时 它正在工作 mutation createExam input data name myName desription ggg questions gf hello time 2 sub
  • 如何使用 Graphql 从 Strapi 查询 Gatsby 中的多个图像

    我在 Strapi 上的项目内容类型上设置了一个名为图片的多媒体 图像 字段 并且添加了 2 个项目 每个项目的图片包含 4 张图像 我想使用 Graphql 在 Gatsby 中查询这些图像 这是我在 gatsby config js 中
  • Strapi 在用户注册时返回错误代码 400

    每次我尝试注册测试用户时 Strapi 用户注册都会返回错误 400 Bad Request 但用户确实是在 Users 集合中创建的 我使用的是标准的 Strapi 电子邮件插件 不是发送网格插件 每次我注册用户时 该插件不会发送电子邮件
  • 在 Nuxt 前端使用 Strapi 上传的图像

    下面是我从 Strapi 公开的 API 数据 http myjson com 1fgx71 http myjson com 1fgx71 我有一个专栏post content这是一个降价 我已经使用所见即所得编辑器上传了图像 现在上传的图
  • 如何将我的 koa 路线分割成单独的文件?

    我正在尝试找出如何将我的路线分成单独的文件 到目前为止我已经有了这个 但它不起作用 我刚刚得到Not found当我尝试访问时http localhost 3001 api things server js var koa require
  • 无法获取店铺名称

    在以前的版本中我用来获取当前商店名称是这样的 router get api app async ctx gt let shop ctx session shop 但是 在新版本中 我无法使用 ctx session shop 获取当前商店名
  • Strapi database.js / 多个数据库配置

    如果我在 database js 中运行 sqlite 则 Strapi 在本地工作 但如果我运行 postgres 则不行 我在网上发现我可以指定npm run develop使用 sqlite 生产应该使用 postgres 对于参考
  • Koa 中的 Promise 错误处理

    如果我在 Koa 中做出承诺 它们可能会被拒绝 function fetch var deferred q defer Some async action which calls deferred reject return deferre
  • Strapi Beta 带有用于电子邮件的自定义 Sendgrid 控制器代码

    Strapi beta 的结构改变了插件的架构方式 删除了 plugins 目录 插件现在保存在 node modules 目录中 我正在尝试编写一些自定义代码以在下订单后触发确认电子邮件 在以前版本的 Strapi 中 电子邮件插件目录位
  • 尝试运行 Strapi 会出现模块解析错误

    我正在尝试通过 Ubuntu 20 04 上的 npm 使用 npm rundevelop 运行一个 Strapi 项目 该代码来自我的一个小组项目 没有其他人遇到这些问题 Error cache plugins strapi plugin
  • 如何在不停机的情况下将更改部署到生产中(通用托管)?

    在不停机的情况下部署从开发到生产的更改 例如某些内容类型模型中的更改 的推荐方法是什么 我正在使用这个设置 我有带有开发 postgres 数据库的开发实例 在生产中 我有 3 个 Strapi 实例 同时服务 api 和 admin 使用
  • 如何在 Strapi 中安全地设置数据库密码?

    Strapi 框架 据我了解 要求在启动时提供数据库密码 通常 密码在database js文件 像这样 module exports env gt defaultConnection default connections default

随机推荐

  • 为什么java中不能在一个文件中定义两个公共类? [复制]

    这个问题在这里已经有答案了 为什么B类不能公开 如何在其他班级中使用班级 是不是在 Cons 里面定义比较好 public class B why not class B int x B int n x n System out print
  • 使用python通过FTP下载大文件

    我尝试每天从我的服务器下载备份文件到本地存储服务器 但我遇到了一些问题 我写了这段代码 删除了无用的部分 如电子邮件功能 import os from time import strftime from ftplib import FTP
  • 有效的算法以频率随机选择项目

    给定一个数组n词频对 w0 f0 w1 f1 wn 1 fn 1 where wi is a word fi is an integer frequencey and the sum of the frequencies fi m I wa
  • 解决错误:无法在 Android Studio 中访问 Publisher?

    我在编译代码时收到此错误 任何人都可以帮助我如何解决此错误或可能导致此错误的原因是什么 Edit1 项目的Gradle文件 上面的问题还附带了错误日志 请检查一下 import com google gms googleservices G
  • 收到异常“枚举时集合发生了变异”

    当我使用此代码时 我收到 Collection was mutated while being enumerated 异常 任何人都可以建议我如何摆脱这种情况 PaymentTerms currentElement for currentE
  • 使用 Log::Log4perl 制作自记录模块

    有没有办法使用日志 Log4perl制作一个智能自记录模块 即使在没有调用脚本且未初始化 Log4perl 的情况下 也可以将其操作记录到文件中 据我从文档中可以看出 使用 Log4perl 的唯一方法是在运行脚本中从配置初始化它 然后实现
  • 为什么浏览器在刷新同一页面时会发送两个请求?

    我创建了一个简单的 Node js 应用程序 它记录日志以控制台当前request url对于每个传入的 HTTP 请求 当我在 Mac OS X ML 上的 Chrome 中刷新页面时 我收到对同一页面的两个请求 Why 相比之下 当我使
  • 如何从静态 javascript 获取 ember / emberjs 中视图实例的引用?

    我在网络上 SOF 和 Google 看到了很多有关此问题的问题 但到目前为止还没有明确的答案 我有一个常见的 Ember 应用程序 带有各种视图和控制器 我的一个视图有一个实例方法 我想从静态上下文中调用它 因此在一个普通的 javasc
  • 为什么 6 个内置常量中有 2 个是可赋值的?

    在有关的文档中内置常量 不包括site常量 指出 注 姓名None False True and debug 无法重新分配 对它们的分配 即使作为属性名称 也会引发SyntaxError 因此它们可以被视为 真 常数 如果我没错的话 Tru
  • 免费源代码控制

    到目前为止 尽管我做了很多小型家庭项目 但我从未在自己的项目中使用过任何源代码管理 我现在即将部署我的第一个个人公共网站 并认为这是建立一些东西的好时机 我正在寻找的主要内容之一是版本控制 标签等 与 Visual Studio 2010
  • 如何制作一个接受尾随垃圾的 DateTimeFormatter?

    我正在改装一些旧的SimpleDateFormat使用新 Java 8 的代码DateTimeFormatter SimpleDateFormat 因此旧代码接受日期后面包含内容的字符串 例如 20130311nonsense 这DateT
  • 当目录名中有空格时如何使用copyfile?

    我正在尝试在 Windows 下执行简单的文件复制任务 但遇到一些问题 我的第一次尝试是使用 import shutils source C Documents and Settings Some directory My file txt
  • 在 Angular 中处理 forEach Ajax 调用的正确方法

    我需要使用 for 循环更新数组中每个对象的数据 一旦捕获所有数据 就运行一个函数 我不想在其中混合 jQuery 并以正确的 Angular 方式进行 这就是我正在做的事情 scope units u1 u2 u3 scope data
  • 使用 Elastic BeanStalk + Django 设置 ElastiCache Redis

    另一个堆栈溢出answer说您需要设置一个elasticache config文件来自动使用ElastiCache创建Redis服务器 但是 我可以在 AWS Elasticache 上创建一个 Redis 实例并将其端点添加到 Djang
  • 在 C++ 中插入和删除整数中的逗号

    这里非常菜鸟 所以最好假设我对任何答案一无所知 我一直在编写一个小应用程序 它运行良好 但可读性对我的数字来说是一场噩梦 本质上 我想做的就是在屏幕上显示的数字中添加逗号以使其更易于阅读 有没有一种快速且简单的方法可以做到这一点 我一直在使
  • 如何删除 Eclipse Mars Jboss Tools 工具栏项目

    我已经安装了 Eclipse Mars 并且还从 eclipse 市场安装了 Jboss Tools 我的问题是 安装 JBoss 工具后 我的菜单栏中似乎有一组服务器控件 这些控件是按照早期学习中心风格创建的 我已经尝试过 窗口 gt 透
  • Rijndael 256 加密:Java 和 .NET 不匹配

    我需要将 Rijandael 加密的 powershell 脚本转换为 Java 这是源powershell代码 Reflection Assembly LoadWithPartialName System Security Add Typ
  • 您遵循个人软件流程吗?您的组织/团队是否遵循团队软件流程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 了解更多信息 维基百科上的
  • 延迟回调直到脚本添加到文档中?

    如何让回调在脚本实际附加到文档之前不运行 function addScript filepath callback if filepath var fileref document createElement script fileref
  • Strapi - 限制用户仅获取与他相关的数据

    通常 登录用户会获取内容类型的所有条目 我创建了一个 片段 内容类型 id name content users lt lt gt gt snippets lt lt gt gt 表示 具有并属于许多 关系 我创建了一些测试用户并提出请求