一、登录的种类划分:

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

iOS开发之登录注册系统相关推荐

  1. java注册登录客户端_GitHub - a-voyager/LoginSystem_Client: 登录注册系统(桌面客户端)——Java课程实践...

    基于HTTP协议和MySQL的多平台登录注册系统 摘要 基于HTTP协议和MySQL的多平台登录注册系统主要用于模拟演示互联网中常见的BS/CS模式登录注册系统.目前网络互访一般基于两种协议HTTP协 ...

  2. ios开发基础之通讯录系统实战-20

    ios开发基础之通讯录系统实战 基础知识 OC 基础 segue 的使用.delegate 代理的使用 自定义代理.面向对象思想 沙盒容器的数据持久化方案, controller 之间的跳转 ,登录方 ...

  3. Java图形界面开发—简易登录注册小程序

    登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的地方,详见其它博客. Java程序操作数据库SQLserver详解 功能介绍:简单的登录注册系统,使用了数据库 ...

  4. JavaWeb登录注册系统/界面(邮箱验证码,数据库连接,详细注释,可作结课作业,可用于学习,可接入其他主系统)

    目录 1.前言 2.系统实机演示 3.系统分析与设计 (1)主要软件与工具 (2)系统分析 (3)系统规划 4.系统设计与构建 (1)JavaWeb创建 (2)JavaWeb运行 (3)先期依赖准备: ...

  5. WordPress注册登录注册系统插件

    简介: WordPress的登录注册系统有很多问题,不符合一般用户的使用习惯,举例来说: (1)注册时候无法自行设置登录密码,系统将自行生成一段非常复杂的密码给用户,根本无法记忆,只能再次重置密码. ...

  6. Python实现登录注册系统

    登录注册系统 1 数据持久化 2 步骤 3 代码 1 数据持久化 因为需要下一次运行程序的时候可以使用上一次注册的账号,所以已经注册过的账号需要持久化. 2 步骤 1.确定持久化对象:所有已经注册过的 ...

  7. Android+Blockly大作业(含登录注册系统、碎片式浏览、Blockly设计)

    此次大作业实现功能包括: 1.数据库的搭建 2.登录注册界面及主界面界面的设计 3.碎片的应用 4.webBlockly的嵌套 我曾在不同活动调用数据库的bug.数据库的检索和碎片的实现上花了很多时间 ...

  8. 【JAVA】网页版登录注册系统2.0

    前言 JAVA实现网页的登录与注册2.0版 一.环境的搭建 导入1.0版本的项目Java实现网页版登录注册系统-Java文档类资源-CSDN文库可参考[JAVA]网页版登录注册系统_Lx_Hy_的博客 ...

  9. 【JAVA】网页版登录注册系统

    目录 前言 一.环境的搭建 二.功能实现 1.登录功能 2.注册功能 [注意] 总结 前言 JAVA实现网页的登录与注册 一.环境的搭建 1.创建Maven Web工程,参考[JAVA]Web服务器- ...

最新文章

  1. GnuPG如何安全地分发私钥(1)GnuPG的用法
  2. 在RHEL5.0中用YUM解决RPM包的依赖关系
  3. C盘过满或者重装系统小技巧(不需要重做系统)
  4. scala常用spark的pom.xml与读取csv为rdd到最终join操作
  5. SAP CRM BSPWDApplication.do
  6. 小度智能音箱维修点_小度智能音箱APP下载
  7. 链表的分解(C++)
  8. 详解python可迭代对象、迭代器和生成器
  9. 文件可以直接删除吗_原来手机中的这些文件可以删除,难怪手机越用越卡
  10. Web项目--------原Oracle数据库的项目同时兼容MySql
  11. FHJ学长的心愿 QDUOJ 数论
  12. 时域离散信号/系统频域分析(matlab)零点,极点,因果,稳定
  13. 交叉编译工具链的安装以及介绍
  14. GEE学习笔记03(空间类型数据)
  15. NSLocale中常用的语言代码对照表
  16. mongodb 什么比mysql快_MongoDB为什么比mysql效率高
  17. oracle归档切换,oracle 切换归档方式
  18. 机器指令与微指令的关系
  19. 华为服务器cpu型号,服务器cpu型号 数字
  20. 关于github的高级搜索技巧

热门文章

  1. sparksql(2)——dataframe的ap-printSchema、withColum、count、drop、describe、select
  2. iOS 相册权限绕过漏洞
  3. 解决 Xcode10 编译错误 ld: library not found for -lstdc++6.0.9
  4. 一个机器学习博士的忠告
  5. ROS初学笔记 - C++11与PCL库冲突问题
  6. 数组——两个有序数组的合并
  7. html5该怎么样学习?零基础入门HTML5学习路线
  8. Java 将字符串转换为字符数组 toCharArray()
  9. 继承性和层叠性 权重 盒模型 padding(内边距) border(边框) margin 标准文档流 块级元素和行内元素...
  10. vscode编辑器tab换行缩进问题