第三方登录用户信息表设计

user表:站内账号表,即原始的账号-密码信息表
字段有 user_id ,username,password

social_account表:第三方账号信息表
如 wx_account :微信账号信息表
alipay_account:支付宝账号信息表

字段有id , openid,user_id

通过两个表的user_id字段关联即可

这样设计的话,有个地方需要思考,那就是实际业务中活动中,用户识别是以哪个id作为唯一识别。

以电商下单为例,
情况一:用户已经注册了站内账号,然后通过‘微信绑定’功能授权登录,最后下单
情况二:用户没有注册站内账号,直接用微信授权登录,然后下单了;

对于情况一,订单表对应的用户唯一识别就是user_id;
而对于情况,订单表对应的用户唯一识别就是openid;

那这里就有问题了,订单表是不是既要存user_id,也要微信的openid ?那后续再做支付宝登录时是不是还要增加支付宝的openid字段呢?
还有就是查询的时候是用user_id还是相应的openid来查询?

这个问题的解决方案要看具体的业务需求。
如果第三方账号下单前必须绑定一个已存在的站内账号,那问题很好解决,
先查询相应的social_account表,找到user_id字段的值,如果为空就提示用户做‘绑定站内账号’的操作,那这时订单表的用户识别就是user_id;

如果允许第三方账号可以直接下单,并且后续可以绑定到某个站内账号,那么就要做数据的合并了,需要另外做程序处理。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
⽤户登录系统数据库设计 ⽤户登录系统数据库设计 最近看了看公司后台⽤户登录系统的设计, ⽐较混乱, 主要还是因为URS和Oauth以及URS第三⽅这三个登录形式各不相同导致的。 下⾯着重介绍⼀下涉及到第三⽅登录中需要注意的问题 在⼀个新项⽬中, 如果是要建⽴⾃⼰的登录体系的话, 那么直接创建⼀个Users,包含username和password两列,这样,就可以实现登录了: id " username " password " name等其他字段 ----+----------+----------+---------------- A1 " bob " a1b23f2c " ... A2 " adam " c0932f32 " ... 如果要让⽤户通过第三⽅登录,⽐如微博登录或QQ登录,怎么集成进来呢? 以微博登录为例,由于微博使⽤OAuth2协议登录,所以,⼀个登录⽤户会包含他的微博⾝份的ID,⼀个Access Token⽤于代该⽤户访问微博的API和⼀个过期时间。 要集成微博登录,很多童鞋⽴刻想到把Users扩展⼏列,记录下微博的信息: id " username " password " weibo_id " weibo_access_token " weibo_expires " name等其他字段 ----+----------+----------+----------+--------------------+---------------+---------------- A1 " bob " a1b23f2c " W-012345 " xxxxxxxxxx " 604800 " ... A2 " adam " c0932f32 " W-234567 " xxxxxxxxxx " 604800 " ... 加⼀个QQ登录Users就⼜需要加3列,⾮常不灵活 那么我们需要对这个进⾏拆分。当⽤户以任意⼀种⽅式登录成功后,我们读取到的总是Users对应的⼀⾏记录,它实际上是⽤户的个⼈资料(Profile),⽽登录过程只是为了 认证⽤户(Authenticate),⽆论是本地⽤密码验证,还是委托第三⽅登录,这个过程本质上都是认证。 所以,如果把Profile和Authenticate分开,就⼗分容易理解了。Users本⾝只存储⽤户的Profile, 其中ID为关联不同登录⽅式的外键。 id " name " birth等其他字段 ----+------+----------------- A1 " Bob " ... A2 " Adam " ... ⽽通过⽤户名⼝令登录可视为⼀种Authenticate的⽅式,利⽤LocalAuth维护: id " user_id " username " password ----+---------+----------+----------- 01 " A1 " bob " a1b23f2c 02 " A2 " adam " c0932f32 通过微博登录可视为另⼀种Authenticate⽅式,利⽤OAuth维护, 但是access_token⼀般情况也只有⼏个⼩时的时效, 所以存储它是没有意义的, 每次登录的时候去微博后台 验证⼀下客户端传来的token就⾏了。 如果⽤户只⽤了第三⽅登录, 那就拿第三⽅数据来填充刚才的User即可。 id " user_id " weibo_id " ----+---------+----------+ 11 " A1 " W-012345 " 12 " A2 " W-234567 " 如果要添加另⼀种OAuth登录,⽐如QQ登录,那就再加⼀个列标⽰不同站点也就OK了, 但是要注意⽤户在不同登录⽅式的⽤户名和photo⼀般不⼀样, 所以也单独存起来 id " user_id " oauth_name " oauth_id " nick_name" photo" ----+---------+------------+----------+----------+------+ 11 " A1 " weibo " W-012345 " 12 " A2 " weibo " W-234567 " 13 " A1 " qq " Q-090807 " 14 " A2 " qq " Q-807060 " 通过这种⽅式, ⽆论⽤户采⽤哪种⽅式登录, 都可以锁定到⽤户的user_id。 下⾯再说⼀下⽹易的URS登录, 因为我们要直接采⽤⽹易通⾏证, 所以也就不需⾃⼰存储密码, 因此我们的架构应该设为User id " user_Email " username " birth ----+------------+----------
基于jsp的第三方机票预订系统的分析与设计 基于JSP的第三方机票预订系统是一个用于方便用户查询和预订机票的在线平台。该系统具有以下分析和设计特点。 首先,系统的前端页面采用JSP技术进行开发,可以实现动态生成网页内容和数据交互。用户可以通过系统的界面进行机票查询、比较、选择和预订。系统的前端设计需要考虑用户界面友好性和易用性,例如通过搜索栏和过滤器提供快速查询功能,提供结果排序选项等。 其次,系统的后端采用Java语言开发,通过使用JSP和Servlet的组合来处理页面逻辑和数据交互。后端设计需要采用模块化设计,将不同的功能模块进行拆分,例如用户管理模块、机票查询模块、订单管理模块等。每个模块应该有清晰的接口和功能划分,便于后期维护和扩展。 系统的数据库设计需要根据实际需求,存储必要的用户信息、机票信息和订单信息等。数据库需要进行合理的结构设计和索引优化,以提高系统的查询和存储效率。 此外,系统的安全性也需要考虑。用户的敏感信息如密码和支付信息等需要进行加密存储和传输。还可以通过验证码、用户权限控制和登录日志记录等方式加强系统的安全性。 系统的性能优化也是一个重要的方面,在用户访问量较高的情况下需要保证系统的稳定和响应速度。可以采用分布式架构、缓存技术和负载均衡等手段来提高系统的并发处理能力。 综上所述,基于JSP的第三方机票预订系统的分析与设计需要考虑前后端的开发技术、数据库设计、安全性和性能优化等方面的要求。通过合理的设计和开发,可以创建一个方便快捷、安全可靠的机票预订平台,为用户提供优质的服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值