平台目前包括多个子系统、多个版本,不同版本都是使用相同的运营系统。为了方便用户使用多个版本,我们需要绑定用户的QQ、微信帐号。此外,为了最大限度地防止由于某个登录系统故障而导致用户无法使用APP的情况,我们需要一个统一的帐号管理&登录服务。这个服务就是:【统一登录服务】。主要包括以下功能: 绑定用户的 QQ、微信, ,支持多种登录方式(QQ、微信), 支持运维配置协作者QQ(代理游戏的开发商员工),提供统一的登录页面 & REST API,支持 xx 域系统的接入
1. 统一登录服务设计
统一登录服务为子系统提供统一的登录票据和票据验证方式,对子系统完全屏蔽第三方登录系统的接入差异。子系统接入蓝鲸统一登录服务后,则可实现QQ登录、微信登录,而不需要关心这两种登录方式的实现细节和接入流程;更重要的是,第三方登录系统变更时,只需要在统一登录服务上做变更,而子系统完全不需要做任何改动。在介绍具体细节之前,先看一下简化的统一登录服务的整体架构示意图:

图1:统一登录服务架构示意图统一登录服务主要分为两部分:登录服务,账号管理服务。登录服务主要负责将第三方登录系统的登录票据转换为统一的登录票据,并维护票据信息,账号管理服务主要处理用户多个账号体系(QQ、微信)的映射关系。统一登录服务的核心数据是登录票据,难点是如何将登录票据跨域写入子系统的cookie中。本文先重点围绕这两部分展开。
1.1 登录票据设计
第三方登录系统验证用户登录信息成功后,统一登录服务根据登录方式、用户id、登录时间戳等信息生成原始的登录票据(o_ticket);原始登录票据(o_ticket)经过AES加密、Base64编码后生成统一的登录票据(bk_ticket)。
1
2
3
4
|
# 原始登录票据
o_ticket = '登录方式|用户id|登录时间戳'
1. 统一登录票据
bk_ticket = urlsafe_b64encode(AES(o_ticket))
|
如果错误,返回错误信息 |
返回数据 |
没有登录票据 |
登录票据不合法 |
登录票据已过期 |
用户信息不存在 |
系统内部错误,请联系【助手】 |
str |
接入系统id |
str |
登录成功后的回调链接 |
str |
默认的登录方式,可选值为:qq、xx |
function callback(status){
// 回调状态参数为2表示清除登录票据成功
if(status == 2){
// 你的退出登录逻辑
}else{
// 登出失败处理逻辑
}
}
// 清除登录票据操作,操作成功后回调callback方法
bk_logout.logout(callback);
|
相关推荐
大家好,开发者们!今年大约有9万人参与了Stack Overflow的调查。令人印象深刻的是,Postgres被评为第一数据库。此外,DB Engines还将PostgreSQL列为全球增长最快的数据库之一。这对我们意味着什么呢?很明显,我们应该努力成为PostgreSQL专家。朝这个方向迈出的一个重要步骤是设置我们自己的数据库进行实践实验。所以,无论你喜欢阅读还是观看,让我们一起走过三种实用、用
gRPC-Web使Web应用能够通过类似于Envoy的代理访问gRPC后端。Envoy是Istio的默认代理,因此,我们可以利用Istio的EnvoyFilter构件来创建无缝连接的云原生应用。 grpc istio 介绍 在这篇文章中,我将引导你构建一个简单的Web应用,使用emoji替换用户输入文本中的关键字,并使用gRPC-Web和Istio与gRPC后端进行通信。 以下是我们创建emoji
长久以来 LXD 已经支持多种存储驱动。用户可以在 zfs、btrfs、lvm 或纯目录存储池之间进行选择,但他们只能使用单个存储池。一个被频繁被提到的需求是不仅支持单个存储池,还支持多个存储池。这样,用户可以维护一个由 SSD 支持的 zfs 存储池用于 I/O 密集型容器,另一个简单的基于目录的存储池用于其他容器。幸运的是,现在这是可能的,因为 LXD 在几个版本后有了自己的存储管理 API。
引言 2020 年 8 月 21 日,Istio 发布了 1.7 版本。除了介绍新版本的主要更新内容外,本文会重点分析 Istio 团队在产品更新策略上的激进态度和举措。是稳扎稳打做好向后兼容,带给用户所承诺的易用性;还是快刀斩乱麻,做进击的追风少年,且听笔者慢慢道来。 如约而至——Istio 1.7.0 发布 就在几天前,Istio 发布了 1.7 版本,和 1.6 版本的发布时间正好间隔三个月
链表常用方法详解 链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据元素和指向下一个节点的指针。在Go语言中,链表的常用方法包括插入节点、删除节点、查找节点、反转链表以及获取链表长度。下面将逐一详解这些方法,并提供相应的示例。 1. 插入节点 在链表中插入新节点的方法有多种,可以在链表头部、尾部或指定位置插入节点。以下是一些常见的插入节点方法: 头部插入:在链表头部插入新节点,使其成为
回到顶部