内建账户常见问题
应用内用户的密码需要加密吗
不需要加密密码,我们的服务端已使用随机生成的 salt
,自动对密码做了加密。 如果用户忘记了密码,可以调用 requestResetPassword
方法(具体查看 SDK 的 AVUser 用法),向用户注册的邮箱发送邮件,用户以此可自行重设密码。 在整个过程中,密码都不会有明文保存的问题,密码也不会在客户端保存,只是会保存 sessionToken 来标示用户的登录状态。
sessionToken 在什么情况下会失效?
如果在控制台的存储的设置中勾选了「密码修改后,强制客户端重新登录」,则用户修改密码后, sessionToken 会变更,需要重新登录。如果没有勾选这个选项,Token 就不会改变。当新建应用时,这个选项默认是被勾上的。
在 PC 端用手机号登录,在小程序上用微信登录,如何绑定到同一个账号上?
从逻辑上,在 PC 端登录的账号,与在小程序中用微信登录的账号,他们没有任何可以联系在一起的地方。如果都是独立创建了两个账号,只能在业务层面进行绑定(也就是将一个账号的所有关联对象全都迁移到另一个账号,然后删除原账号)。
如果可以在业务上加一些限制,则可以避免上面这种「创建了两个独立的账号」的情况。比如,如果手机号是账号必须设置的信息,那么我们可以在以手机号作为关联项。具体的步骤如下,首先是 loginWithWeapp
并带上 failOnNotExist
参数,这样如果该微信关联的用户已经存在则照常登录,如果没有则会失败,此时跳转到使用手机号登录/注册的页面,让用户通过手机号登录或注册,成功之后再通过 associateWithWeapp
接口关联当前微信账号。
不通过短信验证能否强制修改 _User 表 mobilePhoneVerified 字段,使其设置为 true?
可以通过云引擎使用 master key 来修改 mobilePhoneVerified
的值。因为云引擎运行在可信的服务器端环境中,所以可以全局开启超级权限(Master Key),这样云端会跳过包括 ACL 和 Class 权限在内的检查,让你自由地操作所有云存储中的数据,当然这种方式也只允许调用一些仅供 Master Key 使用的 API。