用户
用户
更新时间:2021-08-29 10:03:54

文档
属性·动作·事件



功能概览


用户组件用于制作应用中的基础用户登录/注册、用户管理以及用户权限设置功能。其本质是一个用户数据表,同时提供了以下主要功能性函数:

  • 发起登录行为(包括手机、邮箱、微信公众号、小程序等),返回是否成功及失败原因;
  • 获取当前用户信息;
  • 发起手机/邮箱注册行为,并记录注册信息;
  • 通过手机/邮箱重置密码;
  • 退出登录;
  • 用户访问权限控制;


注意,电商组件必须搭配一个用户组件才能使用,即任何购物车/购买行为,必须来自一个已经登录后的用户。

用户表有以下默认字段:




用户登录类型


用户组件提供以下多种用户注册/登录方式:

  • 手机号
  • 邮箱
  • 微信公众号
  • 微信小程序


每一种注册/登录方式,都对应一种类型的登录凭证,所谓登录凭证,即用户登录时发送给后台,进行登录验证的信息。每种注册/登录方式的的登录凭证如下:



在用户表中,有一个“登录类型”字段,专门来标记每一条用户记录的登录类型,字段值为从0开始的数值,每种类型对应的字段类型数值如上表所示。



用户表中每一条用户记录信息,只能对应一种注册/登录方式,且不能在中途修改。

每种类型的注册/登录方式,可以同时收集用户的其他信息,比如,使用微信小程序登录的用户,可以进一步绑定手机号,此时,用户记录中除了有openid,还会有手机号的信息,但此时该用户依然需要使用openid作为登录凭证进行登录,手机号只是作为一个附属信息。


用户注册概览


用户的注册即向用户表中添加一条数据。针对每种注册/登录类型,其主登录凭证对应的字段(比如,手机号注册时的手机号字段),不能有重复的值,否则会注册方法会返回“用户已注册”。

不同类型的注册/登录类型有不同的注册方法,其中,手机号和邮箱注册,需要使用用户表的以下方法:

除了用户类型,其他信息都为必填信息。用户类型是设置用户权限时需要的一个字段信息,具体使用方法请参见本文档”用户权限“部分。

微信小程序与微信公众号注册与手机/邮箱注册不同,都是系统自动通过微信接口获取openid作为登录凭证,而不需要用户填写用户名密码,因此,其注册和登录方法是统一的,都是使用用户组件的”发起小程序/公众号登录“方法。

如用户表中已存在该用户的openid,则”发起登录“方法会直接返回当前用户的用户信息,如用户表中尚无该用户的openid,则”发起登录“的方法,会在用户表中新插入一条数据,即注册了一个新用户。

无论是小程序登录还是公众号登录,都有两种类型,一种是需要获取头像昵称,一种是不需要头像昵称。如果选择需要头像昵称,则用户表中会将当前微信用户的头像和昵称自动填入头像昵称字段,如果不需要,则头像昵称不会自动填入。注意,无论是小程序或公众号应用,如果需要获取用户头像昵称,都需要用户手动授权。具体方法如下:

  • 公众号:请在应用配置信息中选择“初始化获取头像昵称”,此时,应用初始化时会弹出头像昵称授权框;

  • 小程序:则需要使用一个按钮,将按钮的类型选择为“用户授权”,并在授权成功时,发起小程序能录,并将“是否需要获取头像和昵称”选项选为是;







手机号注册方法



无论是手机号还是邮箱注册,都需要验证用户的注册手机或邮箱。以手机号注册为例,整个注册流程如下:

注意,为了防止恶性刷短信验证码,每次发送短信验证码之前,都需要有一个图片验证码过程。详细的操作步骤如下:

step1&step2:获取图片验证码并存储图片ID


step3:请求发送短信验证码
请求时需要将图片验证码的ID、用户填写的图片验证码的结果以及用户填写的手机号发送至后台,并将发送短信的类型选择为“注册验证”。

如发送成功,则提示用户已成功,请查收短信:

如发送失败,则提示用户用户失败原因,也可以自动再请求一个新的图片验证码:


step4:发起注册

最后一步,将用户的填写的手机号、短信验证码、昵称和密码发送至后台,发起用户注册。
用户注册后,后台会返回注册结果和失败原因,如果注册失败,我们需要提示用户失败的原因:

具体手机注册与登录的教程,详见视频中心-》经典模型-》手机号注册登录教程。




用户登录


每种注册/登录类型的用户登录方法也不同。微信公众号与小程序类型的登录,只需要调用用户组件的“发起小程序/公众号登录”方法即可,其注册与登录的方法是一体的,详见本文档“用户注册概览”部分。

手机和邮箱类型的登录,则分为两种类型:
1、用户手动登录:此时,用户需要填写用户名和密码进行登录(如为手机登录,用户名则为手机号,如为邮箱登录,用户名则为邮件地址)
2、初始化自动登录:用户登录一次之后,后台会通过http only 的cookie(即后台服务设置的cookie)将当前用户的登录令牌存储在客户端浏览器,我们可以在应用初始化的时候,通过此登录令牌去换取当前用户的信息。因此,用户只要不手动清除cookie,就可以在应用初始化时自动登录,无需再次输入有户名密码。

两种类型的登录原理如下:





手动登录的具体操作如下(以手机号登录为例):



登录后,后台会返回登录结果,包括以下信息可以供前端使用:



自动登录,通常是在项目初始化时进行,调用用户组件的"获取当前用户信息":



完成之后,后台会返回当前用户“是否匿名”,如返回“是否匿名”为否,则说明成功获取了当前用户的信息,自动登录成功。如“是否匿名”返回为是,则说明并未获取到当前用户信息,需要用户进行手动登录:






用户权限设置


为了保证后台服务的安全性,用户组件提供了用户权限设置功能。针对后台的每一个服务,都可以设置访问权限。具体来说,每一用户都可以对应一个用户类型,每一个用户类型可以对应一种到多种用户角色,每种用户角色,可以对应一个或多个后台服务。如下图所示:

step1:定义用户角色
要设置用户权限,我们首先要定义用户角色。在以下例子中,我们的后台有三个服务:

我们定义三个用户角色,普通权限、高级权限和管理权限,然后设置每种权限对三个服务的访问权限:


step2:定义用户类型
然后,我们定义三种类型的用户:普通用户、VIP用户以及管理员。其中,普通用户,对应普通权限,VIP用户,对应高级权限,管理员,则对应高级权限+管理权限,即可以访问到所有的三个服务。


step3:设置用户类型
接下来,我们只需要在用户注册时设置用户类型即可,比如,我们将用户注册为VIP用户:

用户类型也可以通过用户组件的“更新”方法进行修改,比如,用户注册时为普通用户,后来可以升级为VIP用户,此时,只要将该用户的“用户类型”更新为“VIP用户”即可。
我们也可以手动在用户表中修改用户类型:


用户类型设置完成后,后台就会自动根据当前用户类型,来判断该用户是否有权限调用某个服务。如果判断为否,则会直接在调用服务时返回失败。这样,即使有黑客破解了应用前端代码,也不能通过模拟调用服务的方法去越权调用服务了。

本页目录
功能概览
用户登录类型
用户注册概览
手机号注册方法
用户登录
用户权限设置
相关资源
问答
用户表使用自定义提交数据方式,提示成功了,但是手机号和昵称都不记录
问答
用户登录结果赋值给对象变量,对象定义结构与用户组件一致但获取不到字段值
问答
用户组件如何设置用户权限
问答
导出部署后用户组件注册收不到验证码
更新
修复更新"用户组件的登录有效期"不生效问题
问答
为什么手机注册不成功
问答
通过表单组件更新用户表有问题
问答
私有用户表中的原始字段不能通过表单数据修改吗?
更新
修复web应用发布为小程序后,用户组件发起微信公众号登录 出现duplicate entry
问答
ivx中的用户鉴别与用户信息获取
文档反馈