某科学的开发者
某科学的开发者
  • 发布:2024-05-01 04:21
  • 更新:2024-05-01 04:22
  • 阅读:85

还是那个该死的权限问题:uni-id-users ,或者你们说说该怎么优化吧?

分类:uniCloud

很简单的需求,获取数据,然后调用安全检查,一大堆问题:
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  
        //  }  
        // }  
    }  
}  
2024-05-01 04:21 负责人:无 分享
已邀请:
某科学的开发者

某科学的开发者 (作者) - 某外包公司全栈开发……(不接项目哦)

我,就在此,百分百确认,不再使用 unicloud 了。

要回复问题请先登录注册