Appwrite用户权限配置:如何让用户仅查看自己的帖子并添加user_id属性
Appwrite新手指南:添加user_id属性+配置用户仅看自身帖子权限
一、给posts文档添加user_id属性
- 打开Appwrite控制台,进入你的项目,找到「数据库」模块
- 选中posts集合,切换到「属性」标签
- 点击「添加属性」,按以下设置:
- 属性ID:
user_id - 类型:字符串(因为Appwrite用户ID是字符串格式)
- 建议勾选「必填」,保证每个帖子都绑定用户
- 属性ID:
- 保存即可
如果用API创建文档,直接把当前登录用户的ID作为user_id字段传入,示例(JS SDK):
databases.createDocument( '[你的数据库ID]', '[posts集合ID]', ID.unique(), { title: '我的第一篇帖子', content: '内容示例', user_id: appwriteAccount.$id // 当前登录用户的ID } );
二、配置用户仅查看自身帖子的权限
方法1:创建文档时手动设置权限
创建帖子时,同时给文档添加权限,只允许当前用户读写:
databases.createDocument( '[你的数据库ID]', '[posts集合ID]', ID.unique(), { title: '我的帖子', content: '内容', user_id: appwriteAccount.$id }, [ Permission.read(Role.user(appwriteAccount.$id)), // 仅该用户可读 Permission.write(Role.user(appwriteAccount.$id)) // 仅该用户可修改/删除 ] );
方法2:用集合规则批量控制(更高效)
不想每次创建都写权限代码?直接给posts集合加规则:
- 进入posts集合的「权限」标签,点击「添加规则」
- 选「文档权限」,权限类型设为「读取」,匹配条件选:
user_id等于$user.id($user.id是Appwrite内置变量,指当前登录用户ID) - 同样可以添加「写入」权限的规则,确保用户只能改自己的帖子
- 保存后,所有新创建的文档都会自动应用这个规则,用户只能看到自己
user_id匹配的帖子
提示:如果是已存在的旧文档,需要手动补全user_id字段,或者重新设置权限,新规则才会对它们生效。
内容的提问来源于stack exchange,提问作者2dar
相关产品推荐
相关产品推荐

