用户中心系统设计

背景

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

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

主要功能如下

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

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

功能介绍

用户登录

在互联网用户中心体系中,一般会支持手机、邮箱、帐号、三方登录。其中三方登录一般会接入 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 表来存储用户认证信息,大大提高了我们授权方式的灵活性

时间: 2024-08-02 00:50:52

用户中心系统设计的相关文章

用户体验衡量:Google应用的用户中心的指标体系

文章描述:Google应用的这套用户中心的指标体系通过提供一个可广泛适应性的维度框架,以及具体指标的创造流程,给我们量化用户体验提供了非常好的参考. 非常感谢@liuyaping在阿里做的关于用户中心的衡量指标的分享和交流,很受启发.Google应用的这套用户中心的指标体系通过提供一个可广泛适应性的维度框架,以及具体指标的创造流程,给我们量化用户体验提供了非常好的参考. 下面是根据Google的<Measuring the User Experience on a Large Scale: Us

请教关注企业公众号以后自动登录网站用户中心问题

问题描述 请教关注企业公众号以后自动登录网站用户中心问题 1,现在用户只要关注企业公众号以后,自动生成随机用户名密码.并且可以通过底部菜单链接进入用户中心. 2,现在的问题是,过了几个小时以后,再从微信公众平台底部菜单点击用户中心,这个时候提示需要登录,页面自动跳转到登录界面(原则上还是自动登录才对) 3,当我关闭网页,到微信公众平台再次点击用户中心,又可以自动登录了 4,排查,第一次点击用户中心,发现可以获取code. 但是获取不到openid.返回错误提示errcode=>40029:err

asp.net用户中心,单位和用户数据同步思路

问题描述 目前有3个系统,1个是用户中心,只用来存储用户信息,2个子系统,1:子系统的用户信息都从用户中心的接口来获取,但是数据量有点大.2:数据中心不能操作子系统的数据库,所以不能做成实时的增删改接口.3:子系统获取用户中心的数据时,希望只获取用户中心有修改过的数据.希望各种能提供一些好的建议和思路. 解决方案 解决方案二:关于数据同步,那就是ETL的解决方案了.1.SSIS2.SQLserver的数据同步3.kettle数据工具太多了.关键是需要根据你们的数据库类型和业务的分配.解决方案三:

基于Hadoop的医院数据中心系统设计与实现

基于Hadoop的医院数据中心系统设计与实现 浙江大学  张洪磊 本论文首先完成医院数据中心系统的开发,然后以电子病历系统为例,实现了结构化数据在数据中心的高速读取和存储:以PACS系统为例,实现了非结构化数据在数据中心的高速存储和读取:在机器学习平台上实现了推荐引擎算法.以Hadoop分布式框架为基础构建医院的数据中心系统具有实施成本低.数据存储安全可靠.系统易扩展.数据读写速度快.计算能力强等特点.数据中心系统与现有医院临床信息系统可实现无缝集成,为医院提供结构化数据和非结构化数据的高速存储

乐视网开通了全新用户中心,并推出“看视频、获大奖”等活动

在今年10月9日举办第三届乐视影视盛典上,乐视网将全面推出"乐迷"公决,乐迷将全面参与年度最受欢迎的电影.电视剧.明星评选.近日,乐视网将在北京.上海.广州举办三场线下评审会,除邀请明星.专业评委外,乐视网还将邀请多名大众评审参与:此外,乐视网还将在上海校园举行多场拉票活动,真正体现 "乐迷"http://www.aliyun.com/zixun/aggregation/4880.html" style="line-height: 1.6;&qu

OpenCenter —— PHP 通用用户中心框架

OpenCenter是一款基于ThinkPHP的用户中心产品.其介于框架和应用之间,提供通用的用户中心和后台模块给开发者用来实现自己的业务系统.基于Apache2.0的开源协议,对商业友好,永久开源免费.使用OC您将获得: 1.通过简单配置即可实现用户中心,无需开发即可使用.用户中心包含了注册.登陆.第三方登陆.个人主页等功能. 注册支持用户名.邮箱.手机号方式: 注册步骤可以配置,可以设置是否需要上传头像等步骤: 独有的用户角色机制,可以轻松实现不同身份不同权限的用户注册: 个人主页展示,可以

discuz注册和登陆流程的(用户中心同步)

注册流程 第一步: /source/class/class_member.php: on_register注册入口 L602 左右 if(!$activation) {//不为空,说明用户已经注册过 //将用户注册到用户中心,调用第二步uc_user_register方法 $uid = uc_user_register(addslashes($username), $password, $email, $questionid, $answer, $_G['clientip']); 第二步: /u

从营销角度讲,互联网思维就是:以用户中心

互联网思维在(移动)互联网.大数据.云计算等科技不断发展的背景下,对市场.对用户.对产品(品牌).对企业价值链乃至对整个商业生态的进行重新审视的思维方式.从营销角度讲,互联网思维就是:以用户中心,创造极致的用户体验,深入到内心满足消费者.今天害怕被颠覆的人,一定要研究互联网思维,如果你不学习.不研究互联网思维,你的企业迟早会被颠覆. 你看一下近年来商业世界的变化就不难理解了.世界上曾经有过这样一家世界500强的企业,名叫"柯达",在1991年的时候,他的技术领先世界同行10年,但是20

互联网促成了传统行业的用户中心制

过去的一段时间参与了几个http://www.aliyun.com/zixun/aggregation/8150.html">传统行业与互联网结合的项目,对于传统行业来说互联网除了是一种极为高效的效能工具之外,互联网也冲击了原有的商业结构,很多界限变得不是很清晰.其中一个就是用户买和卖的边界模糊了,用户购买商品并加以评价的过程影响了周围其它人,用户在社交网络上秀所购买的商品,好友间分享的使用体验,甚至是对商品的负面评价.实质上都是主动参与了商品的推介.这是一个卖的过程.这给传统的商业带了巨