用户中心系统设计

img_8a3c68dc041ccc95aa2cc7bbcf89d109.jpg

背景

一般来说大型互联网公司会把授权和用户信息的逻辑放到一个应用中,而这个应用我们统一称为用户中心。

用户中心不关心具体的业务逻辑,只处理用户信息相关的管理及授权登录。当第三方应用需要登录的时候,会把用户的登录请求转发到用户中心处理,处理完毕后,返回给第三方应用,第三方应用根据对应的凭证登录到系统内部。

主要功能如下

  • 用户登录与注册
  • 基本信息查询与修改

从功能来看,整个用户中心还是很简单单,不过其中的逻辑还挺复杂的,比如注册功能,就要分为手机注册与邮箱注册,手机要发送手机验证码,邮箱需要发送验证邮件,点击邮箱里面的链接跳转并进行后续注册流程,上面每步都需要业务上重新发送机制。

功能介绍

用户登录

在互联网用户中心体系中,一般会支持手机、邮箱、帐号、三方登录。其中三方登录一般会接入 QQ、微信、微博这三种方式。

密码登录
1. 用户在浏览器端填写 username + password ,然后提交到服务端
2. 服务端拿到用户提交的 username + password 验证。
3. 验证成功后,服务器返回请求,同时将 cookie 写到对应域

上述流程中,大家肯定会考虑到密码的安全性,我们到底该怎么做才能防止密码被泄露?对称加密还是非对称加密? 如果是对称加密,客户端被黑客反编译,就能拿到密钥,那么所有用户的密码就会存在非常大的泄露风险?如果是非对称加密,私钥要放在哪里才能保证安全?

通用简单的解决方案: Https + MD5 + 随机盐

Https 我就不用在述说了,基本上 Chrome、Firfox 都对不是 Https 的站点进行安全提醒,所以 Https 该上的还是尽快上吧

那如果公司很穷,买不起 Https 证书咋办呢?那么只能在前端页面上做点文章。
由于前端代码暴露在浏览器上,我们只能采用不可逆的密码或者摘要算法,类是与 MD5 / Hash 算法 。如果高级的话,就采用随机 Salt 来提高攻击成本,针对不同用户,加入不同的 Salt,而不是固定盐的方式。使用这种方式的前提「目前对安全的要求不高」

那我们该如何验证密码?客户端端提交 MD5(password)密码。服务端通过 MD5 (Salt + MD5(passowrd))的逻辑来计算最终密码,同时 Salt 只会出现在服务端,且每个用户采用不同 Salt 的方式来生成。这一系列过程中,都没有接触到原始的用户密码,如果出现用户的密码被劫持的话,只会发生在用户在提交密码前截获,这个也就是为什么需要密码控件?

三方登录

当用户以某种登录方式成功登录之后,我们能可以获取到对应 User 表中的用户基础信息,而登录操作只是为了认证用户这个过程,无论用本地密码验证还是第三方登录,以上过程本质上都是认证的形式。

所以用户的信息与登录的授权其实是独立开来的,即 uid 与 登录方式是一对多的关系。比如: 用户 A 使用「微信」登录,服务端认证身份后 uid = abc。而下一次用户 A 使用「微博」登录,同样服务端认证出来 uid = abc。
用户信息表(user_base)只存储用户 Profile 相关信息

 id | name | city
----+------+-----------------
 A1 | Tom  | 上海
 A2 | Jack |  背景

而本地密码验证可以当做一种授权方式,可以称为 local_auth 表

 id | user_id | password
----+---------+----------
 1 | A1      | qazwsx
 2 | A2      | edcrfv

而通过微博登录就可以视作为另外一种登录方式,称为 weibo_auth 表

 id | user_id | weibo_id | weibo_access_token | weibo_expires
----+---------+----------+--------------------+---------------
 1 | A1      | W-qaz | xxxxxxxxxx         | 604800
 2 | A2      | W-wsx | xxxxxxxxxx         | 604800

最后,如果还要增加一种登录方式的话,可以直接添加一直 xx_auth 表来存储用户认证信息,大大提高了我们授权方式的灵活性

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章 概 述 1 第二章 系统总体结构 3 一、 系统硬件结构 3 二、 系统软件结构 5 三、 UTSTARCOM解决方案的特点 5 第三章 方案说明 8 一、 前置交换机/排队机 8 1. 排队机 9 2. CTI链接 9 3. 呼叫引导 10 4. 先行业务代表调度 10 5. 专家座席选择 10 6. 移动座席 10 二、 交互式语音应答系统 11 三、CTI服务器 13 1.CallPath 的功能 13 2.CallPath的技术说明 20 3.应用程序接口(API) 20 4.CallPath服务器子系统_(Subsystem) 21 5.Call Path服务器及操作环境 22 四、 坐席台 23 五、 客户中心管理系统 24 1. 平台管理系统 24 2. 应用管理系统 26 3. 壁挂式显示板 27 六、前置机服务器 27 七、数据库服务器 28 八、 录音模块 28 第四章 系统软件组成及功能结构 29 一、 软件设计思想 29 二、 软件功能结构 30 1. 自动语音应答系统 31 2. 话务员座席系统 31 3. CTI服务器 32 三、 业务生成 34 四、 对2000年问题的考虑 37 第五章 应用软件系统 38 一、应用软件系统概述 38 二、应用系统的特点 40 三、数据库设计 42 四、数据接口 43 第六章 应用系统的实现 49 一.电话证券交易服务 49 二、用户咨询业务 51 1.咨询业务的分类 51 2. 信息检索 53 3. 咨询回复 55 4.咨询业务的实现 56 三、用户信息查询 59 1. 查询业务概述 59 2. 查询业务的实现 60 3.查询结果回复 63 五、电话付费业务 65 1. 付费业务概述 65 2.付费业务的实现 65 3.付费业务人工操作处理流程 66 六、自动外拨业务 69 1.通知类业务 69 2、业务宣传 71 七、客户管理 75 1.客户管理概述 75 2.客户基本资料库的定义 76 3.客户管理操作处理 79 第七章 管理子系统 82 一、系统管理 82 1. 呼叫监控/话务统计 82 2. 人工服务营业开始/结束管理 84 3. 操作员管理 84 4. 网络管理与安全管理 85 二、应用管理 85 1. 系统日志管理 86 2. 业务数据管理 88 3. 日终处理 89 4. 业务数据统计 91 第八章.客户服务中心的售后技术支持 94 第一章 概 述 1 第二章 系统总体结构 3 一、 系统硬件结构 3 二、 系统软件结构 5 三、 UTSTARCOM解决方案的特点 5 第三章 方案说明 8 一、 前置交换机/排队机 8 1. 排队机 9 2. CTI链接 9 3. 呼叫引导 10 4. 先行业务代表调度 10 5. 专家座席选择 10 6. 移动座席 10 二、 交互式语音应答系统 11 三、CTI服务器 13 1.CallPath 的功能 13 2.CallPath的技术说明 20 3.应用程序接口(API) 20 4.CallPath服务器子系统_(Subsystem) 21 5.Call Path服务器及操作环境 22 四、 坐席台 23 五、 客户中心管理系统 24 1. 平台管理系统 24 2. 应用管理系统 26 3. 壁挂式显示板 27 六、前置机服务器 27 七、数据库服务器 28 八、 录音模块 28 第四章 系统软件组成及功能结构 29 一、 软件设计思想 29 二、 软件功能结构 30 1. 自动语音应答系统 31 2. 话务员座席系统 31 3. CTI服务器 32 三、 业务生成 34 四、 对2000年问题的考虑 37 第五章 应用软件系统 38 一、应用软件系统概述 38 二、应用系统的特点 40 三、数据库设计 42 四、数据接口 43 第六章 应用系统的实现 49 一.电话证券交易服务 49 二、用户咨询业务 51 1.咨询业务的分类 51 2. 信息检索 53 3. 咨询回复 55 4.咨询业务的实现 56 三、用户信息查询 59 1. 查询业务概述 59 2. 查询业务的实现 60 3.查询结果回复 63 五、电话付费业务 65 1. 付费业务概述 65 2.付费业务的实现 65 3.付费业务人工操作处理流程 66 六、自动外拨业务 69 1.通知类业务 69 2、业务宣传 71 七、客户管理 75 1.客户管理概述 75 2.客户基本资料库的定义 76 3.客户管理操作处理 79 第七章 管理子系统 82 一、系统管理 82 1. 呼叫监控/话务统计 82 2. 人工服务营业开始/结束管理 84 3. 操作员管理 84 4. 网络管理与安全管理 85 二、应用管理 85 1. 系统日志管理 86 2. 业务数据管理 88 3. 日终处理 89 4. 业务数据统计 91 第八章.客户服务中心的售后技术支持 94
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值