资讯专栏INFORMATION COLUMN

浅谈多个社交账号的登录注册设计

Mr_houzi / 1970人阅读

摘要:本篇文章,主要讲述了用户登录注册的逻辑及如何用社交账号登录。仅供参考,具体情况依据产品需求而定。社交账号登录参数参数平台渠道社交平台开放验证数据的合法性。若存在,直接进行登录。若本站不存在账号,引导用户注册,成功后与当前关联即可。

本篇文章,主要讲述了用户登录注册的逻辑及如何用社交账号登录。

仅供参考,具体情况依据产品需求而定。

开放平台有哪些?

微信

Sina微博

QQ

163

360

豆瓣

淘宝

github

开源中国

其他...

用户注册逻辑

参数

(username)用户名

(password)密码

(platform_id)平台ID

(code)验证码

验证数据合法性。

判断`user`表是否存在该用户名。

若存在,引导用户登录。

若不存在,执行注册的程序。

密码加密规则 (参考:加密技术与密钥安全管理)

用户登录逻辑

普通登录:

参数:

(username)用户名

(password)密码

(platform_id)平台ID

(code)验证码

验证数据的合法性。

判断user表中是否存在用户数据。

记录日志。

社交账号登录(参数):

参数:

(platform_id)平台ID

(channel_id)渠道ID

(open_id) 社交平台开放ID

验证数据的合法性。

判断`user_social`表中是否存在该openid的数据。

若存在,直接进行登录。

若不存在,将数据,存储到`user_social` 表,引导用户绑定本站账号。

若本站已存在账号,直接关联账号即可。

若本站不存在账号,引导用户注册,成功后与当前openid关联即可。

记录日志

数据表结构

用户账号表

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键ID",
  `username` varchar(80) NOT NULL DEFAULT "" COMMENT "用户名",
  `password` char(60) NOT NULL DEFAULT "" COMMENT "密码",
  `platform_id` tinyint(1) unsigned NOT NULL DEFAULT "0" COMMENT "平台ID(1=PC,2=Wap,3=Android,4=iOS)",
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="用户账号表";

用户社交账号表

CREATE TABLE `user_social` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键ID",
  `uid` int(11) unsigned NOT NULL DEFAULT "0" COMMENT "用户ID",
  `open_id` varchar(120) NOT NULL DEFAULT "" COMMENT "社交平台开放ID",
  `platform_id` tinyint(1) unsigned NOT NULL DEFAULT "0" COMMENT "平台ID(1=PC,2=Wap,3=Android,4=iOS)",
  `channel_id` tinyint(1) unsigned NOT NULL DEFAULT "0" COMMENT "渠道ID(1=QQ,2=SinaWeibo,3=Weixin)",
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间",
  `update_time` timestamp NOT NULL DEFAULT "0000-00-00 00:00:00" COMMENT "更新时间",
  PRIMARY KEY (`id`),
  KEY `idx_uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="用户社交账号表";

用户登录日志表

CREATE TABLE `user_login_log` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键ID",
  `uid` int(11) unsigned NOT NULL DEFAULT "0" COMMENT "用户ID",
  `platform_id` tinyint(1) unsigned NOT NULL DEFAULT "0" COMMENT "平台ID(1=PC,2=Wap,3=Android,4=iOS)",
  `channel_id` tinyint(1) unsigned NOT NULL DEFAULT "0" COMMENT "渠道ID(1=QQ,2=SinaWeibo,3=Weixin)",
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间"
  PRIMARY KEY (`id`),
  KEY `idx_uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="用户登录日志表";


推荐阅读

系统的讲解 - SSO 单点登录

系统的讲解 - PHP WEB 安全防御

系统的讲解 - PHP 缓存技术

系统的讲解 - PHP 接口签名验证

系统的讲解 - PHP 浮点数高精度运算

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30515.html

相关文章

  • 浅谈多个社交账号绑定设计

    摘要:在详解中使用解决了第三方账号登录集成的问题,那么在获取到用户资料之后呢集成多个社交账号,该如何绑定同一个账号本篇就让我们来探讨一下集成登录的那点事。 Dearmadman 在 Laravel Socialite 详解 中使用 larastarscn/socialite 解决了第三方账号登录集成的问题,那么在获取到用户资料之后呢?集成多个社交账号,该如何绑定同一个账号?本篇就让我们来探讨...

    wean 评论0 收藏0
  • 互联网业务安全之通用安全风险模型

    摘要:验证码安全参考信息重放登录注册找密等入口,可能通过短信验证码邮箱验证码之类的进行确认操作,如果末对操作进行次数及频率上的限制,则会产生大量的重放攻击。高并发缺陷交易类重放攻击,高并发的情况下末对用户操作行为加锁,导致购买限制的绕过。 showImg(https://segmentfault.com/img/bVBVVR); 业务安全从流程设计维度可划分为账户体系安全、交易体系安全、支付...

    liaorio 评论0 收藏0
  • 我在全球最大同性社交平台那点事

    摘要:从最大的同性社交平台获取数据好了,言归正传,回到题目。乌云密布的爬虫百度网盘这件事,是我不想看到的,这类安全问题的一个共同特点用户自身确实存在问题。 本文作者:夏之冰雪,i春秋签约作家 《我在百度网盘上看到上万条车主个人信息,企业、政府高官信息、各种数据库和无穷无尽的盗版》,一时间,这篇文章就火了,火爆程度另百度猝不及防。 其实呢,这事真不能全怪百度,毕竟用户分享出去了。之所以引起这么...

    AlphaWatch 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<