关联账号登录验证绑定设计

文章在保证设计思路的情况下,已隐去了原有的项目名称,把项目名称和数据库字段也使用了别名代替。如有类似关联账户需求设计,可参考本篇设计,实现自己的需求即可。

一、背景

备注:以下 对私的客户端(个人业务)和微信公众号合并简称为 对私的客户端
背景介绍:项目有个对私的客户端,对私的客户端主要开展个人的等业务;在系统的应用中嵌入了一些其它应用,如对公业务(对公业务可理解为公司级别的业务)。
前段时间,需求方业务有需求,把对私客户端和对公客户端的账号进行绑定,主要实现的功能是:
1、首次进入如有绑定账号实现免登
2、对公对私账号绑定
3、对公对私账号免登切换
4、对公对私账号解除绑定

二、系统介绍

基于前期已有基础的业务进行拓展开发本次模块设计。
已有的系统如下:
  对公登录系统(简称A)
  对私登录(授权)系统(简称 B)
  客户信息记录系统(简称C)
需要开发的系统或业务:
  对公对私绑定系统(简称D)
   D系统主要提供对公对私账号,提供绑定、切换、解绑、登录时间判定、对外提供接口等功能。
  业务主系统接入设计(简称E)
   E系统主要是调用D系统,进行账号的关联绑定、账号切换、解绑等功能。同时,E系统是一个前后端分离的项目,关联账户设计只是其中的一个模块,涉及到关联账户的主要为前端提供包含关联账户绑定和实现等。

三、设计思路和实现方案:

  一、首先需根据自己的业务确定数据库表的设计,本系统设计的是两张表,主表和副表,主表主要用来供前端查询,展示信息,副表主要做绑定、切换、解除绑定的业务处理,在副表更新时,及时的将主表的信息也进行更新。
  1、主表主要做展示用:主要的字段有(表字段已使用字母代替):
  对私用户号:ZAId;
  对公用户号:ZBId;
  对公用户名称:ZBName;
  操作员编号:ZCId;
  操作员名称:ZCName;
  创建及修改基础字段此处就不列出了。

  2、副表除主表的字段外,还增加了:
  角色编号:FDId;
  角色名称:FDName;
  客户号:FEId;
  客户名称:FEName;
  登录次数记录:FFNumber;
  最后登录时间:FGTime;
  创建及修改基础字段此处就不列出了。

注:因需求业务分展示和账号切换页面,且两页面展示的商户信息不同,所以设计了主附表,其实如果你系统只是单独的账号切换,合适的设计表即可。

账号切换流程图:
切换账号(新).png

账号登出流程图:
安全登出(新).png

执行流程:
  1、首先微信公众号或客户端会配置一个进入E系统的链接(链接中包含用户信息的code,绑定登录字段bind,来源source),此请求会对公登录系统E拦截,拦截后会调对私系统B进行换取获取对私用户信息,并根据对公账号是否登录来判断是跳转到登录页还是跳转到业务主系统E的首页。
  2、绑定用户:若用户由登录页登录后,会根据用户是否已绑定,来提示用户进行绑定,用户点击绑定则进行绑定,若用户选择不绑定,则在此次整个登录过程中也不再弹出提示用户绑定的弹框,实现就是把用户的点击行为记录在session中做记录,页面跳到首页后会判断用户是否选择。
  3、用户可在业务主系统进行除关联账户的操作,具体看自己的业务主要做了哪些功能。
  4、切换账号:若用户进行切换账号,切换账号的流程如上图的切换账号流程图所示。切换账号,主要涉及多系统间的信息交换和所要切换账号的更新。
  我们这边实现的思路是,用户选择切换,我们会先到D系统,查询选择所要切换的账号,并把该个人用户下,该账号设置为最后登录。当A系统询问D系统所要切换的账号时,D系统把该用户最后登录的账号返回给A系统,A系统拿着要切换的账号到C系统换取该用户的信息并返回给E系统。
  当然,中间涉及和B系统对对私用户的信息校验和获取,详细可见图示流程即可。
  5、解绑用户,解绑分为解绑当前登录用户和非当前登录用户,若为非当前登录用户则执行解绑操作即可。
  若为当前登录用户,则先执行解绑,再执行登出安全登出即可。
  6、安全登出:用户执行安全登出操作,E系统先到B系统根据个人用户号换取一个code,并把该code返回给A系统,A系统会执行自己系统的登出操作,跳转到登录页。

四、调试中遇到的问题

  1、首先要根据不同的渠道获取不同的对私用户信息,对私用户信息的校验和获取,在系统的传递间有时会出现未传字段或值的情况,这样就获取不到对私用户信息,进而无法获取绑定的账号。解决办法就是在传递用户类似的code的系统或页面间,及时检测是否能正常获取对应的code,没有则看如何才能传递过去。页面间传递的话,可放在sessionstorage中。
  2、不论是在登录页登录还是绑定登录,都需要在登录前获取设备指纹信息上送给风控平台,所以在跳转登录页前需要loading,获取设备指纹后传给A系统,A系统上送风控系统。设备指纹的获取要调试好,loading和跳转主页重定向的问题。

五、结果和说明

系统间协调调用,主要是为了解决安全问题,像从对私登录系统获取的code,经对公系统到对私系统验证一次后即失效,可保证系统间访问更安全。
经实现和调试后,该系统可实现账号绑定、切换、解绑的功能。
如有其它问题,欢迎大家来提问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58719.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于修改手机绑定那些事!

前言: 最近由于各种各样的原因,注销了使用五六年的手机号码!本来更换手机号码是一件很简单的事情,但是,由于是原手机号码注销,这个时候很多APP需要完成新的手机号绑定,但是由于无法接收旧号码的…

TestHome 注册?如何绑定微信?如何激活账号?

社区主账号是邮箱,一个邮箱可以同时绑定微信和 github! 你可以进行解绑:https://testerhome.com/setting/account 重要的事情,说三遍,所以你需要保证你的邮箱是可以用邮箱和密码来登录的。 如果你已经设置过密码&…

教大家免费获得小白无障碍语音AI助手时间点数

相信大家已经用过小白AI字幕了,也就是小白无障碍语音AI助手,它凭借出色的视频字幕拾取与翻译功能,赢得了不少好评,特别是给听障人士带来了福音,让其能够正常观看视频,同时也能将英语,日韩视频提…

你可能需要一个语音红包小助手(计算机语音)

这个小东西是大二寒假,似乎同学们都很有钱,而我在这个寒假似乎挺穷的,天天看着群里发语音红包。。。。。 而我呢,身为一个弗兰人!!!! l n 不分 h f 不分 前鼻音后鼻音不分…

Python调用Mac的语音助手进行声音播放

在学习Python的时候,看到Windows上调用了winsound模块进行蜂鸣器的声音输出,但是当我把代码放在Mac上运行时报错了 解决问题 代码如下: import winsound winsound.Beep(1000, 3000)错误信息如下: 原因是winsound需要基于Windows…

WPF 实现3维图片墙相关展示效果(凹面墙,凸面墙)

因为需求,需要做3维图片墙的相关展示效果,如凹面墙,凸面墙。由于WPF也不会(会一点C#),3D编程一点也不会,一切从零开始学习,看了《精通Windows3D图形编程》一书和参考了网上相关的资料…

【WPF】 免费图表控件的比较 (OxyPlot,LiveChart,ScottPlot,MsChart)

indowsForm平台下创建图表、Visual Studio 自带的Chart很有名气、但是在WPF平台下却不支持。 2016年左右,WPT Toolkit组件中提供了(WPF Toolkit Data Visualization Controls),但是现在似乎也已弃用。 在业务中,我需…

甘特图控件DHTMLX Gantt教程:用PHP:Laravel实现Gantt(上)

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求,具备完善的甘特图图表库,功能强大,价格便宜,提供丰富而灵活的JavaScript API接口,与各种服务器端技术&am…

C# Winform酒店管理系统根据数据库动态加载房间生成房态图的制作效果(附图且详细)

酒店管理系统根据数据库动态加载房间生成房态图的制作 先放一张效果图: 因为要动态加载房态图,需要遍历每一个小房间,所以我定义了一个自定义控件,大概是这个样子的, 首先创建一个自定义控件,然后我们来…

MFC 关于OnPaint绘图的一些经验

问题描述: 在MFC中在对话框上绘图时, 要求按下按钮绘制相关图形, 写好绘制函数调用调试时,发现若是改变对话框的界面大小或者最小化/最大化或者有隐藏时会导致图形消失。 原因分析: 改变对话框的界面大小或者最小化…

聊一聊过度设计!

文章目录 什么是过度设计?过度设计的坏处如何避免过度设计充分理解问题本身保持简单小步快跑征求其他人的意见 总结 新手程序员在做设计时,因为缺乏经验,很容易写出欠设计的代码,但有一些经验的程序员,尤其是在刚学习过…

毕业5年了还不知道Android热修复?

/ 今日科技快讯 / 近日,谷歌抢在微软之前发布了ChatGPT竞品、自家人工智能聊天机器人Bard,但市场反应并不好。谷歌员工们纷纷批评包括首席执行官桑德尔皮查伊在内的公司领导层,认为公司本周宣布推出Bard的方式过于“仓促”、简直是“一团…

输出国际象棋棋盘

##1、程序分析 国际象棋是8*8的,i(07)代表行,j(07)代表列。当ij为奇数的时候,是黑色格子,反之,白色格子。 ##2、程序实现 方法一:两重循环 (1)程序: for i in range(8…

java简单实现中国象棋

java简单实现中国象棋 可以实现简单的人机对战功能,棋子移动会插入关键帧,可以悔棋等功能 运行效果 import java.awt.Canvas; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.ActionEvent; import ja…

Qt实现中国象棋:(七)悔棋

一、下棋步骤的保存 在设置保存下棋步骤之前,先定义一个bool类型的变量player用于判定是哪一方下子,设定playertrue时是红方下棋,playerfalse时是黑方下棋。 1:要想保存下棋的步骤,必须先弄明白需要保存的信息。一个下棋步骤需要…

三种版本的中国象棋

一.图片资源: 二.图片存放位置: 三.三种不同版本的中国象棋源代码 三种源代码运行之前都需要 点击项目-属性 找到这个地方,把字符集改成“使用多字节字符集”: 一.版本1:中国象棋简洁版(部分特效无…

Pygame实战:中国象棋人机对抗赛今开战、谁占上风?要不要来一盘试试?

🌳导语 哈喽!哈喽!我是木木子!今日游戏更新——中国象棋上线啦! 中国象棋是一种古老的棋类游戏,大约有两千年的历史。 是中华文明非物质文化经典产物,艺术价值泛属于整个人类文明进化史的一个…

Java实现中国象棋(人机对战)

目录 简介 成品视频 实现思路 界面实现分为了三块 棋盘抽象类 按钮组抽象类 棋子绘制接口 棋盘界面实现 棋子的实现 按钮组的实现 监听工厂和监听类 棋盘绘制类的实现 开始游戏实现 停止游戏实现 游戏抽象类 游戏实现类 可走路线和吃棋判断实现 车(ju) 炮 …

Java国际象棋 棋子的走法和吃法

------ Oracle中文开发者社区 ------ 如果你想要学习编程,关注本博客,持续获得技术支持,持续获得技术咨询 java开发企业官方账号 Oracle中国官方账号 Java中国管理部 全网粉丝30万 华为云享专家 阿里专家博主 CSDN内容合伙人 CSDN原力计划作者 51CTO专家博主 CSDN博客V账号 …

Java 中国象棋

实现一个小游戏需要知道从哪里下手,一步步实现和完善,对于一个中国象棋的小游戏,我们可以按这样的顺序展开: 界面按钮加棋子实现棋子的移动判断胜负按钮“开始游戏”和“重新开始”的实现加规则轮次悔棋背景 及 提示 一、界面 …