怒海狂鲨
怒海狂鲨
  • 发布:2023-06-05 18:28
  • 更新:2023-06-06 11:39
  • 阅读:199

【报Bug】db.setUser设置用户id权限校验不通过但是设置同一个用户的角色却可以

分类:uniCloud

产品分类: uniCloud/App

操作步骤:

db.setUser设置用户角色或id

预期结果:

db.setUser设置同一个用户的角色和用户id应该都可以通过权限验证

实际结果:

db.setUser设置用户角色可以通过权限验证,设置同一个用户的用户id却不行

bug描述:

如图,我用uni-id-common的校验token接口,拿到了用户id(uid)和角色(role),用db.setUser设置uid,结果权限验证不通过

但是我改为setUser里设置role角色,却可以通过,都是同一个用户的,都是uni-id-common的校验token接口返回的参数,按理它应该根据uid自己去查角色吧

2023-06-05 18:28 负责人:无 分享
已邀请:
DCloud_uniCloud_VK

DCloud_uniCloud_VK

不会去查库的, uid、role、permission 这3个都要传的 文档

  • 怒海狂鲨 (作者)

    2023-06-07 08:35

  • 怒海狂鲨 (作者)

    uni-id-co的注册和登录接口,把返回的token拿去校验,只能校验出用户id和角色,如何搞到这个角色对应的权限?我看uni-id-common的生成token接口能存权限,但是uni-id-co的注册和登录好像没存权限。

    2023-06-07 08:46

  • DCloud_uniCloud_VK

    回复 怒海狂鲨: 你直接传云对象的clientInfo 就可以了, 这样就是当前用户了. 在云函数中则传 event 即可

    2023-06-07 11:16

  • DCloud_uniCloud_VK

    const dbJQL = uniCloud.databaseForJQL({ // 获取JQL database引用,此处需要传入云函数的event和context  
    event,
    context
    })

    2023-06-07 11:17

  • DCloud_uniCloud_VK

    上面那样写,就不需要setUser了, 就是当前登录用户

    2023-06-07 11:17

  • DCloud_uniCloud_VK

    云对象是这样写


    const dbJQL = uniCloud.databaseForJQL({ // 获取JQL database引用,此处需要传入云对象的clientInfo  
    clientInfo: this.getClientInfo()
    })

    2023-06-07 11:18

  • 怒海狂鲨 (作者)

    试了,不行,说是用户匿名身份,是不是因为我用url调云对象的原因?因为我前端不是uni-app项目,只能url化

    2023-06-07 14:08

  • 怒海狂鲨 (作者)

    我改uni-id-co源码,里面生成token时,我拿到权限再加上去。。。

    2023-06-07 14:09

DCloud_uniCloud_VK

DCloud_uniCloud_VK

dbJQL.setUser({ // 指定后续执行操作的用户信息,此虚拟用户将同时拥有传入的uid、role、permission  
    uid: 'user-id', // 用户id  
    role: ['admin'], // 指定当前执行用户的角色为admin。如果只希望指定为admin身份,可以删除uid和permission字段  
    permission: [] // 用户权限  
})
  • t***@163.com

    这个权限可以填什么啊。。。。。

    2024-05-11 18:29

要回复问题请先登录注册