一、登录的种类划分:
1、 普通登录
2、使用独立系统的登录
3、单点登录
4、 Oauth2.0登录
详细介绍如下:
1、普通登录:
普通的登录需求,要的就是一个登录页面,输入账号密码,提交Form表单,后端查询数据库对应用户名的hash密码,匹配正确则把用户记录到Session,不正确则返回错误。
密码hash: 就是存进数据库的密码是一串密文,密文是明文密码通过不可逆算法得出的。
Session的原理:其实就是依赖了Cookie,通过Cookie记录用户凭证。
2、使用独立系统的登录:
为避免token被窃取,被无限登录网站系统。用户输入账号密码登录成功之后,passport会通过带着一个可逆加密的包含用户信息的token,重定向到www.xxx.com提供的回调处理地址,然后进行解密,匹配正确,则登录用户。要注意的是,这里的加密的信息需要包含一个时间戳,接收方需要认证这个时间戳,过期登录失败。
3、单点登录:
单点登录SSO(Single Sign On),需要实现的需求其实就是在站点A的登录了,那么用户就自动可在站点B、站点C、站点E、F、G登录。
三种实现方式如下:
<1>使用Cookie作为凭证媒介的方式
就是使用cookie作为媒介,存放用户凭证。用户登录父应用之后,应用返回一个加密的cookie,当用户访问子应用的时候,携带上这个cookie,授权应用解密cookie并进行校验,校验通过则登录当前用户。
<2>通过JSONP的方式
用户在父应用中登录后,跟Session匹配的Cookie会存到客户端中,当用户需要登录子应用的时候,授权应用访问父应用提供的JSONP接口,并在请求中带上父应用域名下的Cookie,父应用接收到请求,验证用户的登录状态,返回加密的信息,子应用通过解析返回来的加密信息来验证用户,如果通过验证则登录用户。
<3>通过页面重定向的方式
就是通过父应用和子应用来回重定向中进行通信,实现信息的安全传递。父应用提供一个GET方式的登录接口,用户通过子应用重定向连接的方式访问这个接口,如果用户还没有登录,则返回一个的登录页面,用户输入账号密码进行登录。如果用户已经登录了,则生成加密的Token,并且重定向到子应用提供的验证Token的接口,通过解密和校验之后,子应用登录当前用户。
4、OAuth2.0登录:
现在很多App都使用第三方登录,比如:「微信登录」、「微博登录」、「QQ登录」,其实第三方登录都是实现了OAuth2.0协议,第三方提供一个登录入口,也就是第三方域名下的登录页面。主站需要登录的时候,引导用户重定向到第三方的登录页面,用户输入账号密码之后,登录第三方系统,第三方系统匹配帐号成功之后,带上一个code到主站的回调地址,主站接收到code,短时间内拿着code请求第三方提供获取长期凭证的接口(因为code有一个比较短的过期时间),这个长期凭证叫access_token,获取之后就把这个access_token存到数据库中,请求一些第三方提供的API,需要用到这个access_token,因为这个token就是记录用户在第三方系统的一个身份凭证。一些系统,在获取access_token的时候,还会返回一个副参数refresh_token,因为access_token是有过期时间的,一旦过期了,主站可以使用refresh_token请求第三方提供的接口获取新的access_token以及新的refresh_token。
二、登录的几种方式:
1、账号(手机号/邮箱/用户名)+密码登录
2、手机号+验证码登录
3、第三方登录
三、登录流程的种类:
1、 需要登录后才能继续使用产品功能服务
2、不需要首先登录可以使用产品或者产品的部分功能
四、注册的几种方式:
1、 邮箱注册
2、手机号注册
3、用户名注册
4、第三方注册
五、注册流程的种类:
1、同一页面中完成注册
2、按步骤分页面完成注册
六、登录、注册的注意事项:
1、 邮箱/手机号的占用判断
2、 邮箱/手机号的合法性判断
3、 登录密码的机制
4、 是否需要要确认密码
5、 是否需要验证码
6、 验证码的重发机制
7、 登录注册过程中的异常状态
8、 注册完/登录完一定要直接切回需要登录的流程节点
七、登录、注册的层级划分:
1、 用户层面,面对的目标用户群不同,对应的登录注册的方式也不同。
2、功能层面,就是确保整个登录注册模块逻辑的合理性以及流程的通畅性。
3、 业务层面,不同的业务逻辑,需要的登录注册的方式、流程也不同;不同的功能模块,对登录节点的需求也不同。
4、产品层面,不同的产品类型,对登录注册模块的需求不同。