编辑导读:在面试产品新人的时候,你通常会准备什么样的面试问题。注册登录系统作为产品的基础系统,是很适合考验新人设计逻辑的问题。本文作者对此进行了解读,一起来看看吧。

不管你使用哪一个app,你想要使用核心功能都必须先注册/登录,不知道你有没有思考过注册登录系统的设计逻辑,别看这个部分很基础,但其实也是有点学问的。一个新入行的产品还真是不一定都能完整的考虑到。

如果你想看一下新人产品的水平怎么样,我觉得用这个问题其实就可以进行摸底——我们假定现在你要做一个新的app,注册登录系统你准备怎么设计?

这是包含了注册+登录+找回密码三个子系统的一个基础型系统。新人要回答的完整其实也不容易,我们来看看这个最基础的系统,包含了哪些细节。

我们先聊聊注册的环节。

如果大家回想一下的话,市面上主流的注册方式大概就是几个:短信验证码登录、密码注册和三方账号授权联登,我们一一来聊一下。

短信验证码登录,这是当前最普遍采用的。

每次登录的时候都使用手机号+短信验证码登录,不区分是否首次登录。

但也有几个细节需要关注一下:

1、短信验证码的触发是否需要图片验证码加以验证,来区分对方是不是真人。

这是为了防止受到恶意攻击,一般来说这是一个提高系统安全性的措施,但是对于用户并不友好,我之前碰到过,有的图片验证码很难辨认,所以经常会输入错误,这会导致用户负担加重和用户体验下降,理论上这就是把系统安全的一部分校验成本转嫁给了用户,如果你的app不是对黄牛有利可图或者可能涉及到用户的资金安全和敏感信息安全的话建议不要加这个东西,对中老年用户尤其不友好;

这个图片验证码可以设计成一个临时提高安全性的设计,后系统层面控制,如果受到攻击则打开权限。当然这个设计根据app类型和用户体量来看要不要设计,早期可以不设计。

图片验证码的类型也很多,譬如是看图片输入验证码、滑动拼图、按顺序点击、选指定的物品图形等等,都可以,看你喜欢,考虑一下用户负担就行。

2、短信验证码的触发间隔,主流是60秒的设计。

这个设计是为了解决用户在APP上反复点击获取验证码的问题,一般来说用户点了一次,验证码不会马上收到,等个几秒是正常的,时间长的话甚至要几十秒,但是用户耐心差,如果不加限制就会反复点击,增加平台成本。

这里需要注意一个小细节,很多时候用户会输错手机号,那么重新输入之后,获取验证码是不是需要等前面那个倒计时结束才可以,还是检测到变化就变更为可点击,这是个很小的细节,但是也是会影响用户体验;

3、短信验证码的位数长度和有效时间长度,位数长度是4位或6位,有效时间长度不超过5分钟。

位数长度从安全层面来说6位肯定优于4位,破解概率更小。从目前的已知信息来看,4位也够用,破解的话也需要超过10分钟的时间,所以安全性尚可。当然如果是近距离拦截的话两者无差别。

所以总的来说在实际应用中4位或者6位差别不大,都可以。真要说的话建议是6位,用户感知上更加安全一点。不要设计成其他位数,增加用户上手的成本。

有效时间长度的话不宜超过5分钟,一般是3分钟或者5分钟,也不要搞成1分钟,有时候用户可能耽搁一下就过去了,这个不好。短信验证码的设计本身就是为了安全,所以一个验证码的有效时间绝对不能过长。

在使用短信验证码注册的情况下,有的平台还是会要求用户设置密码,如果能跳过呢,我理解是平台想省点钱,毕竟设置密码以后有部分用户是会选择用密码登录的。但如果不能跳过那就是产品经理设计不合理,用户都已经选择用验证码了还必须设置密码,那么你上来直接告诉用户设置密码不行吗?我知道部分平台在设置密码的时候也会要求输入短信验证码,但这个做法的目的是为了验证手机号是本人在使用,两者的目的和用户感知是完全不一样的,不能因为元素一样就认为是一样的。

4、短信验证码收到之后是不是自动填充的问题,安卓手机是可以监控短信内容的,收到验证码之后可以识别出验证码并填入,填入之后就会自动完成注册登录,这样的话体验就很好。

但是要不要加这个东西我觉得你要斟酌,首先是合规的问题,用户有没有授权,如果没有的话你这就属于违规行为,很容易被举报和处罚,以后这方面会越来越严谨。其次是现在的用户都很注意隐私保护,如果你自动填充,部分用户会认为你恶意监控短信信息,可能会弃用。所以还是斟酌一下,其实我认为即便让用户手动输入验证码也不会有什么流失,毕竟哪有app不需要输入验证码的,用户的操作成本也不高。不加你的合规风险和用户的自我保护问题就没有了,加了反而有点问题。

5、使用手机号验证码登录还有一个非常麻烦的问题,那就是用户如果更换手机号了怎么处理。目前市面上绝大部分平台是没有针对这种情况做任何流程设计的,主要是现在更换手机号的用户没有那么多了。但一旦用户遇到,对应的用户就会觉得很难受,因为几个月以后这部分数据就存在泄露的风险。

体量不大你可以不设计,占比小绝对值也小,体量大的话还是要设计的,占比小但绝对值大,你可以增加一个手机号变更的入口,提示用户通过线下的方式联系你们进行修改。

短信验证码登录现在还有一个普遍使用的更优解,那就是运营商授权校验登录,你经常看到的【使用本手机号一键登录】就是这个功能,用户体验更好一点,成本的话差不多的。但这个功能成功率不是很稳定,需要你考虑登录不成功的情况。

密码注册,这个方式也还是比较常见的,因为有部分用户还是习惯使用密码。

密码注册是PC时代的遗留产物,这种方式也成功的延续到现在了。现在的话一般是邮箱、手机号、身份证三种方式的一种,看情况,不太建议用邮箱了,因为用邮箱注册还要校验邮箱的有效性,操作复杂,体验不好。身份证号注册如果不是政府类APP就还是别用了,身份证号太敏感,用户一般不愿意。

密码注册的话一般是关注两个问题:

1、设置密码时手机号是否做短信验证码校验,这是为了验证手机号是本人在使用,不是被盗用,建议是加一个;

2、密码的长度和类型,长度的话一般是6-15位,类型的话是特殊字符+数字+大小写字母都可以,这个的话主要考虑app的性质,如果是对于安全性要求高的就可以对位数和字符类型要求高一点,常规的app会提示密码强度,但是不会强制要求,有些app就要求很高,譬如个税app,要求特殊字符+数字+大小写字母都要有,位数不低于8位。通常来说这种设计安全是安全,但是用户记不住,我就记不住,每次都重置密码。

平衡好安全性和用户体验,个税app能这么做是因为使用频率低+必须要用,一般的app没有这么刚的。

三方账号授权联登,这现在也比较常见。

这种方式主要是巨头们为了巩固自己的生态,把自己旗下的app尽量串在一起。譬如淘宝系的app都可以使用淘宝账号或者支付宝账号登录,点击授权就行。腾讯系也是一样的,可以使用微信账号或者QQ账号登录。

有的时候还是强制性的,譬如知识星球就只能用微信登录。这是巨头们的一种竞争策略。

当然还有一些情况是强社交关系的app为了获取关系链而引导用户使用微信或者QQ登录,这就看app了。

我要特别说一下一种非常不友好的设计,我就遇到过。当用户选择使用社交账号授权登录之后,发现还是需要用手机号+验证码进行验证,这种设计真是垃圾设计。

我理解大概是为了规避同一个用户有多个账号的问题,也可能是为了获取用户手机号,不管是哪一种,你为啥不直接验证手机号?为什么不降低用户的使用成本?不要为了设计而设计,先授权后手机号验证用户体验差的一塌糊涂,我遇到之后就马上弃用了,一个登录都不顾及用户体验的app,我还能指望它的核心功能会有好的用户体验?产品人不应该犯这种错误。

注册方式大概就这么些,那么怎么选?

小孩子才做选择,成年人都想要。

考虑到用户的使用习惯,短信验证码+密码登录基本是必备的,部分app还会在底部加社交账号联登的入口,这就看你的选择了,如果不是想要引导加入用户的社交关系,那么不加比加好,加了就意味着账号体系的复杂程度增加了,维护起来也麻烦,后续如果想要砍掉就更麻烦,所以做多做不如少做,有些时候给用户更多选择不一定就是好的。

接下去我们聊聊登录的部分。

登录是建立在注册的基础上的,所以要结合注册来看。如果是短信验证码注册和其他账号授权联登其实不存在登录怎么处理的问题,还是一样的方式。所以我们就谈一谈密码登录的问题。

首先是登录安全的问题。大部分app都会关注登录的设备和IP地址是否发生变化的问题,譬如你换了一台新的手机,这个时候设备号就变了,这样一来为了规避账号被盗的问题,会要求先进行手机号验证,证明是本人在使用。

但这个设计其实并不是一个完全有效的设计,因为如果手机丢了的话,其他人取出sim卡是可以绕过这个设计的,它只能解决别人恶意盗用你账号的问题。说到这里我就建议大家都设置一下sim卡的pin码密码,这样即便手机号丢了一般人也用不了,安全性也更强一点。

IP地址变化也是一样的道理,但IP变化不一定是账号被盗,从现实来说可能是出差或者旅游等等,所以安全提醒会弱很多,你可能会收到一条提醒短信或者下次登录的时候报一个异常登录,提醒你注意账号安全。

其次是账号安全的问题,一般金融类app都会要求用户每次都重新登录,或者在固定时间后强制用户重新登录,银行类app最常见了,5分钟不使用你再用就得重新登录,这是为了最大程度保护你的资金安全。

所以需要看你的APP是什么性质的,如果和钱、个人敏感信息无关的话就可以不用设置这么严谨的限制,但也最好不要处理成永久有效,你可以处理成30天有效之类的。

有的app是混合型的,像微信和支付宝,既有常规的功能也有资金相关的功能,这样的话就需要分级处理,在进入资金账户时再加一道密码,每次进入或者使用都需要输入密码,确保资金安全。

5分钟登一次或者每次都登,安全是安全了,但是用户体验不好,所以一般来说平台都会在用户注册或者再次登录时反复引导用户设置手势密码解锁、指纹解锁或者人脸识别解锁。这样安全性和便捷性可以兼顾。

我特别说一下,目前已经有人脸识别系统被黑产的技术攻破的案例,所以即便是业内认为安全等级较高的人脸识别技术也不是完全安全的了,大家在自己使用人脸识别技术的时候还是要注意一下。

最后说一下密码错误如何处理的问题,这里面包含了设密码输入错误、手势密码错误、指纹识别错误、人脸识别错误。

常规来说允许用户输入5次就可以,一般5次都错,那么即便是多输入几次也是错,设置成5次可以有效的规避账号被攻击的问题。

关键的是如果5次都错了,那要怎么处理。有两种方式:一种是锁定固定时间后自动解锁;一种是永久锁定,需要人工解锁。

app账号对于安全性要求没有那么高的话可以选锁定24小时后自动解锁,解锁的时间不要太短,让用户有个记忆点。

app账号对于安全性要求高的话就要永久锁定,然后人工解锁。可以让用户联系客服解锁,注意提前设计好验证身份的方式。也可以让用户通过特殊的方式自行解锁,譬如选择地址或者浏览过的内容、关注过的用户等等。特殊流程解锁的话成本可控一点。

接下去我们谈一谈找回密码的部分。

这个部分和登录的逻辑是类似的,也只需要谈密码登录就行。

一般来说找回密码分为两个步骤,一个是验证身份,一个是设置新密码。

验证身份有很多种方式,早期PC互联网的时候是回答问题,后来就变成了邮箱验证,到移动互联网的时候就变成了手机号验证,当然更进一步的有像微信这种需要好友发消息进行验证的,我记得淘宝好像是选择地址或者最近购买过的商品进行验证,都很不错。

验证的方式可以根据自己的app内容进行处理,常规的app其实手机号验证就够了。如果是涉及资金账户的话,还需要加上输入身份证信息进行校验。

再接下去就是账号注销的问题。

对于一个平台来说肯定不希望用户注销账号,但是这在逻辑上和法规上是不允许,所以必然还是要设计注销功能。这个的话简单做个短信验证码验证或者密码就行。

额外说一下,如果用户注销账号,按照合规性的要求,用户数据是要删除的,但是我估计大部分小公司都是不遵守的,所以在设计的时候就要考虑二次注册的时候历史数据怎么处理的问题。

最后,我谈一谈这背后的账号体系设计。

不管是用哪一种方式进行的注册,都表示背后有一个真实的用户存在,那么对应到数据库就涉及到整个数据库的各类数据表是通过什么要素相互关联的问题了。

首先当然是会有一个用户ID,这个ID一般是内部使用的,但是对于业务部门来说用用户ID是不合适的,大家的习惯是用邮箱账号、手机号或者身份证号来进行用户身份的说明,符合日常生活的习惯,用户ID最多就是在产品和技术进行流通。

举个例子,有个用户遇到问题,联系客服进行反馈,这个时候客服肯定是问用户手机号是多少,而不会问用户你的用户ID是多少,问了的话用户都不知道要如何回答。

所以在进行设计的时候,尽量用邮箱账号、手机号或者身份证号做为主key进行关联,关联用户的个人信息、行为信息、交易信息、发布信息等等。用其中一个就行,最好是手机号或者身份证号,如果没有历史遗留用户问题的话在前端就不要设计邮箱登录的方式,方便后续进行数据存储和管理。

这种情况其实就是把手机号/身份证号和用户画上等号,一般来说问题不大的。

如果在设计app端注册方式的时候允许用户使用三方账号登录,那么就涉及到一个问题,用什么做主key关联各种数据,由于三方账号只是用户的一个属性,所以这种情况下就只能使用用户ID进行关联,也就是说在查询的时候需要先根据三方账号查出用户ID,在根据用户ID查询用户数据,其实管理和使用的时候不是很方便。

所以其实如果不是社交类app我是不建议使用三方账号授权登录的方式的,没啥特别的作用。

总结

你看,说起来是很简单的注册登录系统,但是其实里面还是有很多需要关注的细节,我啰啰嗦嗦也写了5000字。

注册登录系统对于一个产品经理的基础能力的考验和判断是一目了然的,一个新入行的产品经理基础老不牢靠,用这个问题一问就清楚了。所以不要小看基础和简单的东西,简单的会了,复杂的才能做的好。

我今天的分享就这么多,希望对你有个启发。

如果觉得不错欢迎关注我,欢迎留言讨论。