这个需求到底要几天
产品:我要做个登录功能
工程师:哦
产品:什么时候能做好
工程师:有什么功能
产品:就是登录啊
工程师:有注册吗,有登录验证码吗,有找回密码吗,有第三方登录吗,有实名信息验证吗,原生实现还是H5
产品:这么复杂啊,我就想要个登录,输入用户名密码就能登录的那种
工程师:哦,这个保守估计,三天吧
产品:三天!别骗我,这个要我毕业设计就做过,拿用户名密码去服务器验证,同时把用户名密码存本地,下次还能直接登录,这么简单的需求,你居然要三天!
工程师:666,要不我做个银行卡管理App,我来把帐号密码都存起来
产品:你当我傻啊,把帐号密码都给你
工程师:我以人格担保不会泄漏你的密码
产品:呵呵,我不信任你,我的密码都是同一个,泄漏了就完了,而且就算我信任你,万一我手机被Root了,或者被抓包了,人家就可以拿到我的密码了啊
工程师:666,居然还知道Root、抓包
产品:不过这确实是个问题,万一泄漏了用户的密码,这责任还真担不起,要不加个密咯
工程师:嗯,本地可以在注册的时候对密码进行Hash,再交给服务器保存,下次登录就对比Hash就可以了
产品:那个……我还想加个第三方登录的需求,比如微信登录……
工程师:这个需要使用到OAuth2.0协议了
产品:啥,啥协议?
工程师:简单的说,就是你不信任我的网站,但是你信任微信这些大厂,所以想用微信帐号登录,那么用户在登录的时候,就不到我的登录界面了,直接走微信的登录授权,用户确认登录后,微信的登录后台会给我一个返回码,我再拿着这个返回码去微信请求一个access_token,这个access_token就好比你的加密身份证,以后我只要看到这个access_token,就会让你登录了。
产品:这不就是手机验证码嘛
工程师:你开心就好,当然,一般来说,这个access_token会带一个过期时间,refresh_token,比如一般的App,过期时间很长也无所谓,但是对于一些安全性比较高的App,比如银行卡的App,过期时间一般就比较短了,一旦access_token过期,我们就可以使用refresh_token去重新请求新的access_token,重新更新登录信息。
产品:嗯,是挺复杂的,看来确实要三天
工程师:不不不,现在要四天了,毕竟给你上了一天课