
摘要: 云开发 CloudBase 支持匿名、用户名密码、短信、邮箱、微信授权、自定义六类登录方式。选哪种看三条:用户在哪、要不要留存数据、有没有已有账号体系。 开通环境配登录:云开发 CloudBase
登录是做任何有用户的应用都绕不开的一关,也是新手最容易卡住的地方——不是技术难,是选型没想清楚就动手。微信小程序直接用微信身份最省事,Web 应用通常走短信或邮箱,想让用户零门槛试用就先匿名登录再关联正式账号。下面把六种方式的适用边界、配置步骤和登录态机制讲清楚,附一张选型决策表。
云开发内置的登录方式覆盖了绝大多数场景,先看清每种的定位:
登录方式 | 适用场景 | 用户要付出什么 |
|---|---|---|
匿名登录 | 快速体验、临时用户 | 什么都不用做,自动生成临时身份 |
用户名密码 | 传统应用、后台系统 | 注册并记住密码 |
短信验证码 | 移动端应用 | 提供手机号 |
邮箱登录 | 企业应用、正式用户 | 提供邮箱 |
微信授权 | 微信生态应用 | 一次授权点击 |
自定义登录 | 已有用户体系 | 沿用你现有的账号 |
微信小程序还有专门的处理方式:小程序端可以自动完成登录认证,在云函数里用 cloud.getWXContext().OPENID 就能拿到用户身份,不需要用户做任何操作,也不需要你自建账号体系。
不要纠结哪种「更好」,按下面三个问题走,答案基本就定了。
问题一:你的用户在哪个平台?
只做微信小程序,用小程序自带的身份认证,这是成本最低的方案,用户无感知。涉及微信公众号或开放平台,用微信授权登录。纯 Web 应用或多端应用,微信身份不通用,走短信或邮箱。
问题二:用户的数据要不要长期留存?
工具类、一次性使用的应用(计算器、转换器、查询工具),匿名登录就够,用户不用注册也能用。数据需要跨设备同步、需要找回的,必须有正式登录方式(短信、邮箱、微信)。
问题三:有没有已经存在的账号体系?
公司已有统一账号、已有用户数据库,用自定义登录与现有体系集成,不要让用户再注册一遍。企业内部应用还可以走企业身份源接入。
有一种组合特别适合新产品,值得单独说:先让用户匿名登录直接用,产生价值之后再引导绑定正式账号。
云开发支持把多种登录方式关联到同一个账号。用户先用匿名登录快速体验,后续关联手机号或微信登录,所有数据都会保留在同一账号下,不会因为注册而丢失。
这个做法的价值在于降低首次使用门槛。用户打开就能用,用出价值了再注册,转化率通常好于一上来就要求注册。实现上只要在合适的时机(比如用户要保存数据、要跨设备同步时)引导关联即可。
补充一个细节:匿名登录的刷新令牌会在到期后自动续期,所以匿名状态可以长期保持,不用担心用户第二天回来数据没了。
这一步经常被跳过,导致代码写完了登录一直失败。
所有登录方式都必须先在控制台启用。 路径是云开发平台 → 身份认证 → 登录方式,找到你要用的那种,开启它。没启用的登录方式,SDK 调用会直接失败。
短信登录还有一个额外前提:需要在控制台配置短信签名和模板。这部分涉及资质审核,建议提前办,别等到要上线了才发现短信发不出去。
配置完成后,在云开发平台的用户管理里能看到注册用户列表,可以可视化查看和管理用户信息,包括昵称、头像、邮箱、手机号等基本信息,以及你扩展的自定义字段。
不管用户从哪种方式登录,云开发都会给他一个 UID 作为唯一身份标识。这个概念理解了,后面的数据设计就顺了。
UID 有三个特性:全局唯一(每个账号一个)、持久稳定(用户整个生命周期内不变)、跨平台统一(同一用户在不同平台上一致)。
实际开发中怎么用:数据库里凡是和「谁」相关的字段,都存 UID(小程序场景下常用 openid)。订单归属、收藏列表、个人资料,都靠这个字段关联。权限设置成「仅创建者可读写」时,系统也是按这个身份判断的。
有一条要特别注意:UID 要在云函数里取,不要信任前端传过来的值。前端传的用户 ID 可以被篡改,云函数里取的才是可信的。
用户登录一次之后能保持多久?这个问题的答案藏在云开发的双令牌机制里。
访问令牌(Access Token):访问云开发服务的身份凭证,有效期默认 2 小时。SDK 会自动维护它的使用和刷新,开发者不需要手动处理。
刷新令牌(Refresh Token):用来获取新的访问令牌,有效期默认 30 天。访问令牌过期时,SDK 自动用刷新令牌换新的。
对应到用户感知层面:Web 端在用户显式退出登录之前,身份认证状态保留 30 天;移动端根据平台特性自动管理。也就是说用户登录一次,一个月内回来都不用重新登录。
这套机制是 SDK 自动处理的,你不需要写任何令牌管理代码。理解它的意义在于:知道登录态能撑多久,就知道该不该做「记住我」这类功能(通常不需要),也知道用户反馈「总是要重新登录」时该往哪儿查。
登录解决「用户是谁」,权限解决「用户能调用什么资源」,两者要配套。
云开发的权限控制通过三层实现:
角色管理:给不同类型的用户分配角色,内置的有组织成员、注册用户、匿名用户,也可以建自定义角色。
策略配置:给角色配置具体的资源访问权限,覆盖数据库、云函数、云存储。
成员管理:管理用户的角色分配和权限变更。
实际配置时最常用的判断是:这个数据要不要登录才能看?要登录才能写的,权限设成仅注册用户可写;只能看自己的数据(订单、收藏、个人资料),设成仅创建者可读写;公开展示的内容(商品、文章),设成所有用户可读、仅创建者可写。
用户登录成功但读不到自己的数据。检查数据写入时存的身份字段和查询时用的是不是同一个。常见错误是写入时存了前端传的值,查询时用的是云函数取的 UID,两边对不上。
换了登录方式数据就没了。说明没做账号关联。匿名登录和手机号登录如果没关联,系统会当成两个不同账号。要在用户绑定手机号时做关联操作,而不是重新注册一个。
短信验证码收不到。先确认控制台里短信登录方式已启用,再确认短信签名和模板已配置并通过审核。这两步任何一步没完成,验证码都发不出去。
云开发 CloudBase 的登录选型看三条:用户在微信生态就用微信身份(小程序可自动完成认证),跨平台就用短信或邮箱,有已存账号就用自定义登录。想降低首次使用门槛,可以先匿名登录再关联正式账号,数据会保留在同一账号下。配置顺序是先在控制台启用登录方式(短信还需配签名模板),再写代码。登录态由双令牌自动维护,访问令牌 2 小时、刷新令牌 30 天,Web 端登录状态可保持 30 天。记住一条:身份标识要在云函数里取,不要信前端传值。
开通环境,把用户体系搭起来:云开发 CloudBase 购买页
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。