Directus 9文件权限设置:私密对话附件访问限制及mine权限配置
Directus 私信附件权限控制解决方案
一、对话附件访问限制优化(替代单对话建用户组方案)
你之前的单对话创建用户组的方案扩展性极差,对话量级上涨后会出现用户组数据爆炸、权限维护成本指数上升的问题,可通过字段关联+自定义权限规则的方式实现需求:
- 首先为系统预置的
directus_files集合新增2个关联字段:conversation_id(关联你的私信对话集合主键)、related_message_id(关联对应私信条目主键,可选,用于更细粒度的权限控制) - 进入Directus后台「设置>权限>对应认证用户角色>文件(directus_files)>读取权限」,选择自定义权限规则,写入如下逻辑:
注:上述规则中的{ "_or": [ // 匹配当前用户为对话发起方 { "conversation_id": { "sender_id": { "_eq": "$CURRENT_USER" } } }, // 匹配当前用户为对话接收方 { "conversation_id": { "receiver_id": { "_eq": "$CURRENT_USER" } } } ] }sender_id、receiver_id需要替换为你自己的对话集合中存储对话双方用户ID的实际字段名 - 上传私信附件时通过Directus接口钩子自动填充
conversation_id和related_message_id字段,无需手动操作即可实现权限规则自动生效。
二、文件"mine"权限配置
Directus原生支持基于上传者的"我的文件"权限校验,无需额外二次开发:
- 进入对应角色的权限配置页,找到
directus_files集合的读取/编辑/删除权限项 - 权限规则选择
$CURRENT_USER 是上传者,系统会自动匹配文件表内置的uploaded_by字段和当前登录用户ID,仅用户自己上传的文件可执行对应操作 - 如果需要同时兼容对话附件访问权限和个人文件权限,可在自定义规则中通过
_or逻辑将两种校验条件合并即可。
内容的提问来源于stack exchange,提问作者Benjamin Franz
相关产品推荐
相关产品推荐

