很简单的需求,获取数据,然后调用安全检查,一大堆问题:
1、之前发过帖子的 用 jql 获取openid ,
const query = 'user_id==$cloudEnv_uid';
const { data:userInfo } = await this.dbJQL.collection('uni-id-users').where(query).field('wx_openid').get({
getOne:"true"
})
给 wx_openid 字段加 "permission": {
"create": true,
"read": true,
"update": true,
"delete": true
}, 或者在 uni-id-users 全局加 {
"create": true,
"read": true,
"update": true,
"delete": true
}
均报错 :无权限。
2、好嘛,我不用jql ,用db,示例里给了个 db.getCloudEnv ,直接报错 db.getCloudEnv is not a function
const { data:userInfo } = await db.collection('uni-id-users').where({_id: db.getCloudEnv('$cloudEnv_uid')}).field('wx_openid').get({
getOne:"true"
})
是用到老的方法了?getCloudEnv 不存在了??
3、好嘛,不用,于是就出现了,中间尝试了 用 doc ,
let {uid} = await this.uniID.checkToken(this.token)
const res = await db.collection('uni-id-users').doc(uid);
返回:data: {_db: "_db", _coll: "uni-id-users", id: "662a74f5213929f866a0dd3f", projection: {}}
errCode: 0
errMsg: "huoqu"
uid: "662a74f5213929f866a0dd3f"
优秀,即便给 加了各种
"permission": {
"create": true,
"read": true,
"update": true,
"delete": true
} 也都无效,主打一个安全第一是吧 ,权限设置请看图片,
我是真不知道哪儿错了
求助,求助,求助
求助,求助,求助
求助,求助,求助
于是乎 ,还得用 get
const { data:userInfo } = await db.collection('uni-id-users').where({_id: uid}).get()
终于,终于,终于 获取到了 我不容易啊 getOne:"true" 无效,这个是jql专属是吧 嗯
4、这东西,做成这样,是不是不打算用了呀?那个 uni-id的登录接口,超级慢,不行就别搞了…… 下线吧……
以下为全文:
// 云对象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
// jsdoc语法提示教程:https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/129
const UniSecCheck = require('uni-sec-check');
// const uniIdCo = uniCloud.importObject('uni-id-co');
const uniID = require("uni-id-common")
const db = uniCloud.database();
module.exports = {
_before: function () { // 通用预处理器
const clientInfo = this.getClientInfo()
this.dbJQL = uniCloud.databaseForJQL({ // 获取JQL database引用,此处需要传入云对象的clientInfo
clientInfo
})
this.uniID = uniID.createInstance({ // 创建uni-id实例,其上方法同uniID
clientInfo
})
this.token = this.getUniIdToken()
if(!this.token) {
// 登录状态无效
return {
errmsg:"needLogin"
}
}
},
async save(data){
// 安全检查
const uniSecCheck = new UniSecCheck({ // 创建内容安全检测模块实例
provider: 'mp-weixin', // 指定所使用服务的提供商,目前仅支持mp-weixin
requestId: this.getUniCloudRequestId() // // 云函数内则写 context.requestId 云对象内则写 this.getUniCloudRequestId()
})
let {uid} = await this.uniID.checkToken(this.token)
const { data:list } = await db.collection('uni-id-users').where({_id: uid}).get({
getOne:"true"
})
let {wx_openid} = list[0];
const openid = wx_openid.mp
const {errCode,errMsg,result} = await uniSecCheck.textSecCheck({
content: data, // 文本内容,不可超过500KB
openid: openid, // 用户的小程序openid,还是个必填
scene: 2, // 场景值
version: 2, // 接口版本号
});
// if(result.suggest != 'pass'){
// return {
// errCode: errCode,
// errMsg: errMsg,
// result
// }
// }
}
}