小蒋同学
小蒋同学
  • 发布:2022-12-25 03:09
  • 更新:2023-05-18 12:16
  • 阅读:1088

大量开发者需要在云函数/云对象等后端调用uni-id-co的API

分类:uniCloud

大量开发者需要在云函数/云对象等后端调用uni-id-co的API

事实上,很多开发者不打算使用uni-id-pages,只是需要一个像旧版uni-id那样的一个公共模块。
如果uni认为旧版uni-id大而全不适合所有云函数/云对象引入,那也应该是提供uni-id-common和uni-id-co两个公共模块。在全局引入uni-id-common,部分场景下引入大而全的uni-id-co公共模块。

而uni-id-co作为云对象只适合在客户端上做调用。

1)目前来看,如果开发者需要二次封装,在云函数/云对象中调用uni-id-co,发生外网调用,降低性能。
这些人正在发生外网调用、消耗性能却不自知,以不优雅的方式被迫使用uni-id-co:

https://ask.dcloud.net.cn/search/q-Y2xpZW50SW5mby51bmlQbGF0Zm9ybQ==#all  
https://ask.dcloud.net.cn/search/q-dGhpcy5nZXRDbGllbnRJbmZv#all  

https://ask.dcloud.net.cn/question/147975  
https://ask.dcloud.net.cn/question/158754  
https://ask.dcloud.net.cn/question/154519 (uni-id-co不易改造,另外客服所说的【暴露通用的登录逻辑】,也应该在后端实现)

2)客户端是不可信的,我认为可能引发安全问题。

可能遇到的问题:
1)【在不修改uni-id-co的情况下】,若开发者需要在uni-id-co云对象的API执行时,附加其他行为,会被拆分成两步或存在困难。
如:a) 用户付费后,同步调用uniIdCo.authorizeAppLogin() 授权用户登录VIP专属应用;
b) 仅限邀请注册,但邀请码只能一次有效,或发出邀请后1小时过期。
那么,用户注册的邀请码应该在后端加密,以便校验邀请码有效性和时效性,应该在后端判断再调用注册用户API;
c) 考试系统中考官为考生创建账号,调用uniIdCo.addUser();(注意:考官虽然可以调用addUser接口,但是不能任意创建用户,即创建的用户角色固定为考生,或创建的用户前缀为班级编号等等。)
d) 用户登录依据登录环境判断是否开启两步验证,等等...

2)修改uni-id-co云对象,添加验证规则,但是实际业务中只用到了uniIdCo.registerUser这一个API,那么uni-id-co是否同样臃肿?原本开发者已经有一套代码逻辑,升级新版的uni-id,需要将使用到用户接口相关代码拆分到uni-id-co云对象中?开发者频繁修改uni-id-co云对象,如何方便的进行更新?
但是如果把uni-id-co作为公共模块,调用后开发者自行在云函数/云对象中调用uni-id-co,a) 不发生外网调用,b) 代码清爽,需要时可引入uni-id-co模块,调用指定API,c) 不易发生安全问题,不需要做任何配置就能避免:(没有用到的API不会开放,被客户端调用)。

2022-12-25 03:09 负责人:无 分享
已邀请:
3***@qq.com

3***@qq.com

这说到我心里去了,我就在准备改造 uni-id-co 太难了
说真的,有点难用,
我的需求,
一,token要自己加密,因为JWT说穿了,相当于明文
二,注册我想实现自己的逻辑,
三,验证码,我相取消或者换成自己的逻辑,官方那验证码,根本防不了机器人,属于劝退正常用户却对机器学习的机器人毫无防止作用,既然这样,不如不用

四,如果都达不到,我想官方写的我都不用,我只实现一个逻辑,就是auth.role在云函数中可用就行了,

  • chunge404

    很多东西,都是写给他们自已用的,我们拿到手花费太多时间在验证上,这行不通那行不通,说实话,一点都不高效,还不如自已写一个,但是入了坑,只是在这无效挣扎。目前我要在用户接受邀请后,写入其他的东西,或者在接受邀请前,需要一些额外的判断,这就麻烦了,在客户端跟云端来回通信几次才能实现,太特么麻烦了。一个业务逻辑比较复杂的系统,根本不适合用他们现成的东西,写出来的,大部分都是适合他们自已用的,不适合大众化。

    2023-04-16 18:25

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

可以自己做一个云对象,将uni-id-co整体放到这个云对象内。只从uni-id-co内引用需要的方法,绑定到云对象的this上

const { registerUser } = require('./uni-id-co/index.obj.js')  

module.exports = {  
async registerUser (...args){  
return registerUser.call(this, ...args)  
}  
}
  • 呆狗的一生

    这样调用会出错。从一个云对象(或函数)调用uni-id-co时,因为this.getClientInfo方法不能获取到 uniPlatform 和 appId 等信息,然后在uni-id-co/index.obj.js文件中的 checkClientInfo(clientInfo) 时,会出错。相关问题查看:


    https://ask.dcloud.net.cn/question/152147

    2022-12-27 05:13

  • DCloud_uniCloud_WYQ

    回复 呆狗的一生: 不会出错的,this传过去了

    2022-12-27 11:37

  • 小蒋同学 (作者)

    回复 DCloud_uniCloud_WYQ:

    升级uni-id仍遇到问题:

    1)3.x版本中的uniID.getUserInfo等等,在4.x中没有可用的API;

    2)云对象中,我可以自行控制用户权限,希望调用uni-id-co时不再校验权限。

    3)另外,还要根据uid来操作其他用户,而不是传递用户的token。即,本次操作并非用户发起,我没有用户的token信息,只有uid。而在3.x版本中,大多数都是传递uid参数即可,如:修改密码、重置密码、设置头像、更新用户信息、获取用户信息、封禁账户、解禁账户、注销账户、取消注销账户、绑定手机号、解绑手机、绑定邮箱、解绑邮箱、绑定微信、解绑微信、绑定QQ、解绑QQ、绑定支付宝、解绑支付宝、根据uid获取用户角色、根据uid获取用户权限、为用户绑定角色、为用户解绑角色、设置用户邀请码、用户接受邀请、获取接受邀请的用户清单、...................


    事实上,4.x版本的uni-id-co是为前端服务的,根本无法全面替代能被云对象引入的3.x版本的uni-id公共模块。

    2023-01-01 00:14

  • hws007

    const { registerUser } = require('./uni-id-co/index.obj.js')

    怎么我引用,显示找不到模块

    2023-01-07 22:46

l***@163.com

l***@163.com

已经将uni-id-co url化了,但是用起来又各种限制 https://ask.dcloud.net.cn/question/169942
能不能做成一个lib或者npm包,登录这一套流程让开发者来使用,其他不需要。

要回复问题请先登录注册