iOS开发之登录注册系统

一、登录的种类划分:

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、产品层面,不同的产品类型,对登录注册模块的需求不同。

 

原文地址:https://www.cnblogs.com/yuhao309/p/8836817.html