uni-app中uni-id-users权限问题该如何优化

uni-app中uni-id-users权限问题该如何优化

很简单的需求,获取数据,然后调用安全检查,一大堆问题:

  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  
        //  }  
        // }  
    }  
}

图片 图片


更多关于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 了。

回到顶部