uni-app中uni-id-users权限问题该如何优化
uni-app中uni-id-users权限问题该如何优化
很简单的需求,获取数据,然后调用安全检查,一大堆问题:
-
之前发过帖子的 用 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 }
均报错 :无权限。
-
好嘛,我不用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
不存在了?? -
好嘛,不用,于是就出现了,中间尝试了 用
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专属是吧 嗯 -
这东西,做成这样,是不是不打算用了呀?那个 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
// }
// }
}
}
更多关于uni-app中uni-id-users权限问题该如何优化的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app中uni-id-users权限问题该如何优化的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我,就在此,百分百确认,不再使用 unicloud 了。