uni-app 报错:Error 权限校验未通过,参与权限校验的集合:[quanzi_article,uni-id-users]
uni-app 报错:Error 权限校验未通过,参与权限校验的集合:[quanzi_article,uni-id-users]
操作步骤:
- 注册一个账号,发布文章,退出登录,注册另一个账号
预期结果:
- 看到第一个账号的文章
实际结果:
- 报错Error: 权限校验未通过,参与权限校验的集合:[quanzi_article,uni-id-users]
bug描述:
用一个账号发文章,然后切换到其他账号的时候,看不到其他账号发的文章, 报错信息Error: 权限校验未通过,参与权限校验的集合:[quanzi_article,uni-id-users] 这两张表的权限都改成true也没用 quanzi_article.schema.json:
{
"bsonType": "object",
"required": ["user_id", "title"],
"permission": {
"read": true,
"create": "auth.uid != null",
"update": "doc.user_id == auth.uid || 'webmaster' in auth.role",
"delete": "doc.user_id == auth.uid"
},
"properties": {
"_id": {
"description": "存储文档 ID(用户 ID),系统自动生成"
},
"user_id": {
"bsonType": "string",
"description": "文章作者ID, 参考<code>uni-id-users</code> 表",
"foreignKey": "uni-id-users._id",
"defaultValue": {
"$env": "uid"
}
},
"title": {
"bsonType": "string",
"title": "标题",
"description": "标题",
"label": "标题",
"trim": "both"
},
"description": {
"bsonType": "string",
"title": "文章摘要",
"description": "文章摘要",
"label": "文章摘要",
"trim": "both"
},
"province": {
"bsonType": "string",
"title": "发布省份",
"description": "发布省份",
"label": "发布省份",
"trim": "both"
},
"content": {
"bsonType": "string",
"title": "文章内容",
"description": "文章内容",
"label": "文章内容",
"trim": "right"
},
"article_status": {
"bsonType": "int",
"title": "文章状态",
"description": "文章状态:0 草稿箱 1 已发布",
"defaultValue": 0,
"enum": [
{
"value": 0,
"text": "草稿箱"
},
{
"value": 1,
"text": "已发布"
}
]
},
"delState": {
"bsonType": "bool",
"title": "是否已被删除",
"description": "true是被删除了 false或者空代表正常",
"defaultValue": false
},
"view_count": {
"bsonType": "int",
"title": "阅读数量",
"description": "阅读数量",
"defaultValue": 55,
"permission": {
"write": false
}
},
"like_count": {
"bsonType": "int",
"description": "喜欢数、点赞数",
"defaultValue": 0,
"permission": {
"write": false
}
},
"comment_count": {
"bsonType": "int",
"description": "评论数量",
"defaultValue": 0,
"permission": {
"write": false
}
},
"last_comment_user_id": {
"bsonType": "string",
"description": "最后回复用户 id,参考<code>uni-id-users</code> 表",
"foreignKey": "uni-id-users._id"
},
"picurls": {
"bsonType": "array",
"title": "封面大图",
"description": "缩略图地址",
"label": "封面大图"
},
"publish_date": {
"bsonType": "timestamp",
"title": "发表时间",
"description": "发表时间",
"defaultValue": {
"$env": "now"
}
},
"publish_ip": {
"bsonType": "string",
"title": "发布文章时IP地址",
"description": "发表时 IP 地址",
"forceDefaultValue": {
"$env": "clientIP"
}
},
"last_modify_date": {
"bsonType": "timestamp",
"title": "最后修改时间",
"description": "最后修改时间",
"defaultValue": {
"$env": "now"
}
},
"last_modify_ip": {
"bsonType": "string",
"description": "最后修改时 IP 地址",
"forceDefaultValue": {
"$env": "clientIP"
}
}
},
"version": "0.0.1"
}
更多关于uni-app 报错:Error 权限校验未通过,参与权限校验的集合:[quanzi_article,uni-id-users]的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你的第一个账号是admin,第二个是其它角色吗,检查下schema,view_count等字段加了权限,也会导致失去读权限,去掉字段权限试试。
更多关于uni-app 报错:Error 权限校验未通过,参与权限校验的集合:[quanzi_article,uni-id-users]的实战教程也可以访问 https://www.itying.com/category-93-b0.html
试过数据库清空再初始化,也是不行
@DCloud_云服务_MAQ 这个注册完一个用户再注册新用户会出错的bug很多人都遇到了,怎么解决呢
有解决方案吗?? 我也是这个问题 …
有,我的是user表的某个username的权限没改
我解决了,一个把uni-id-users中的password字段类型“password”改为"string",并且加上"permission": {
“read”:true,
“write”:true
}
在 uni-app 开发过程中,如果你遇到了 Error 权限校验未通过,参与权限校验的集合:[quanzi_article,uni-id-users] 的错误提示,通常是因为你在访问云函数或云数据库时,没有通过权限校验。以下是可能的原因和解决方法:
1. 检查云函数或云数据库的权限配置
- 在 uniCloud 控制台中,检查
quanzi_article和uni-id-users这两个集合的权限配置。 - 确保你当前的角色(如
admin、user等)有访问这些集合的权限。 - 如果需要,可以临时将权限设置为
所有用户可读或所有用户可写进行测试,但在生产环境中应谨慎设置权限。
2. 检查云函数的调用方式
- 如果你是通过云函数访问数据库,确保在云函数中正确使用了
uniCloud.database()方法,并且在调用时传递了正确的uniIdToken。 - 例如:
const db = uniCloud.database(); const res = await db.collection('quanzi_article').get();
3. 检查 uni-id 的登录状态
- 如果你使用了
uni-id进行用户身份验证,确保用户已经登录并且uniIdToken是有效的。 - 你可以通过
uniCloud.getCurrentUserInfo()来获取当前用户的信息,确保用户已登录。
4. 检查云函数的权限校验逻辑
- 如果你在云函数中自定义了权限校验逻辑,确保逻辑正确并且已经处理了所有可能的错误情况。
- 例如:
exports.main = async (event, context) => { const { uniIdToken } = event; const userInfo = await uniCloud.getUserInfo({ uniIdToken }); if (!userInfo) { return { code: 403, message: '权限校验未通过' }; } // 其他业务逻辑 };
5. 检查客户端的调用代码
- 确保在客户端调用云函数或云数据库时,传递了正确的参数,特别是
uniIdToken。 - 例如:
uniCloud.callFunction({ name: 'yourFunctionName', data: { uniIdToken: uni.getStorageSync('uniIdToken') } }).then(res => { console.log(res); }).catch(err => { console.error(err); });
6. 调试和日志
- 在云函数中添加日志输出,检查每一步的执行情况,确保没有遗漏或错误。
- 例如:
console.log('User Info:', userInfo);


