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
iOS开发之登录注册系统相关推荐
- java注册登录客户端_GitHub - a-voyager/LoginSystem_Client: 登录注册系统(桌面客户端)——Java课程实践...
基于HTTP协议和MySQL的多平台登录注册系统 摘要 基于HTTP协议和MySQL的多平台登录注册系统主要用于模拟演示互联网中常见的BS/CS模式登录注册系统.目前网络互访一般基于两种协议HTTP协 ...
- ios开发基础之通讯录系统实战-20
ios开发基础之通讯录系统实战 基础知识 OC 基础 segue 的使用.delegate 代理的使用 自定义代理.面向对象思想 沙盒容器的数据持久化方案, controller 之间的跳转 ,登录方 ...
- Java图形界面开发—简易登录注册小程序
登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的地方,详见其它博客. Java程序操作数据库SQLserver详解 功能介绍:简单的登录注册系统,使用了数据库 ...
- JavaWeb登录注册系统/界面(邮箱验证码,数据库连接,详细注释,可作结课作业,可用于学习,可接入其他主系统)
目录 1.前言 2.系统实机演示 3.系统分析与设计 (1)主要软件与工具 (2)系统分析 (3)系统规划 4.系统设计与构建 (1)JavaWeb创建 (2)JavaWeb运行 (3)先期依赖准备: ...
- WordPress注册登录注册系统插件
简介: WordPress的登录注册系统有很多问题,不符合一般用户的使用习惯,举例来说: (1)注册时候无法自行设置登录密码,系统将自行生成一段非常复杂的密码给用户,根本无法记忆,只能再次重置密码. ...
- Python实现登录注册系统
登录注册系统 1 数据持久化 2 步骤 3 代码 1 数据持久化 因为需要下一次运行程序的时候可以使用上一次注册的账号,所以已经注册过的账号需要持久化. 2 步骤 1.确定持久化对象:所有已经注册过的 ...
- Android+Blockly大作业(含登录注册系统、碎片式浏览、Blockly设计)
此次大作业实现功能包括: 1.数据库的搭建 2.登录注册界面及主界面界面的设计 3.碎片的应用 4.webBlockly的嵌套 我曾在不同活动调用数据库的bug.数据库的检索和碎片的实现上花了很多时间 ...
- 【JAVA】网页版登录注册系统2.0
前言 JAVA实现网页的登录与注册2.0版 一.环境的搭建 导入1.0版本的项目Java实现网页版登录注册系统-Java文档类资源-CSDN文库可参考[JAVA]网页版登录注册系统_Lx_Hy_的博客 ...
- 【JAVA】网页版登录注册系统
目录 前言 一.环境的搭建 二.功能实现 1.登录功能 2.注册功能 [注意] 总结 前言 JAVA实现网页的登录与注册 一.环境的搭建 1.创建Maven Web工程,参考[JAVA]Web服务器- ...
最新文章
- GnuPG如何安全地分发私钥(1)GnuPG的用法
- 在RHEL5.0中用YUM解决RPM包的依赖关系
- C盘过满或者重装系统小技巧(不需要重做系统)
- scala常用spark的pom.xml与读取csv为rdd到最终join操作
- SAP CRM BSPWDApplication.do
- 小度智能音箱维修点_小度智能音箱APP下载
- 链表的分解(C++)
- 详解python可迭代对象、迭代器和生成器
- 文件可以直接删除吗_原来手机中的这些文件可以删除,难怪手机越用越卡
- Web项目--------原Oracle数据库的项目同时兼容MySql
- FHJ学长的心愿 QDUOJ 数论
- 时域离散信号/系统频域分析(matlab)零点,极点,因果,稳定
- 交叉编译工具链的安装以及介绍
- GEE学习笔记03(空间类型数据)
- NSLocale中常用的语言代码对照表
- mongodb 什么比mysql快_MongoDB为什么比mysql效率高
- oracle归档切换,oracle 切换归档方式
- 机器指令与微指令的关系
- 华为服务器cpu型号,服务器cpu型号 数字
- 关于github的高级搜索技巧
热门文章
- sparksql(2)——dataframe的ap-printSchema、withColum、count、drop、describe、select
- iOS 相册权限绕过漏洞
- 解决 Xcode10 编译错误 ld: library not found for -lstdc++6.0.9
- 一个机器学习博士的忠告
- ROS初学笔记 - C++11与PCL库冲突问题
- 数组——两个有序数组的合并
- html5该怎么样学习?零基础入门HTML5学习路线
- Java 将字符串转换为字符数组 toCharArray()
- 继承性和层叠性 权重 盒模型 padding(内边距) border(边框) margin 标准文档流 块级元素和行内元素...
- vscode编辑器tab换行缩进问题