我们为何需要单点登录系统

SSO,Single Sign On,也就是单点登录,保证一个账户在多个系统上实现单一用户的登录

现在随着网站的壮大,很多服务会进行拆分,会做SOA服务,会使用dubbo做微服务,或者简单的小型分布式,

这样在服务与服务之间,或者系统与系统之间都是通过HTTP或者restful来进行通信的,

在以往的单系统应用中,我们都是把user存入session中的,需要用到的时候随时取,如果取不到就跳转到登录注册页面,非常简单的原理

但是在现如今的分布式应用中,如何保证session同步呢?

比如订单服务是在 order.jd.com

购物车服务在 cart.jd.com

那么这2个二级域名下的用户信息如何实现同步呢?

解决方案:

  1. tomcat有一个session同步方案,就是一个传播机制,打个比方有A B C 3台tomcat,这3台tomcat的user信息都在session中并且保持一致,如果其中一台的user信息变化了,那么就会传播至另外两台,则实现同步,这样做没问题,但是仅仅只是在做tomcat集群的时候tomcat很少的时候会用,一旦集群增大,有100台,那么就互相传播吧,传播是需要性能损耗的,那么整个网站的性能就会被拉低,你的网站在你的网络风暴中就会晕死

  2. nginx 非粘性session,说穿了就是一个session绑定传播,起初user的session在tomcatA上,tomcatA宕机了,那么session会把所有的信息传播到tomcatB,以此实现session共享,但是这也有个问题,就是传播的时候需要等待,快的时候1分钟左右,慢的时候要5分钟,用户的耐性有限,所以也不能这么做

  3. 自己研发一套session高性能共享系统,我见过有这么做的公司,但是需要时间人力成本,所以不建议,如果你是BAT,随意~

  4. SSO解决方案,目前比较流行的方案,自行开发一套单点登录系统,比如就使用 sso.jd.com,可以在这个二级域名下进行登录和注册,登录和注册都是以restful形式,为了可以同时提供给cms以及手机端的支持,登陆后把用户的相关信息存入redis,redis设置好过期时间,key为一个token,使用uuid,uuid生成后需要存入cookie中,失效时间随意定,但是再登录后需要重置redis和cookie中的失效时间

京东的实现:

sso的登录系统:

sso的注册系统(京东是两套都分开了,这样布个集群怎么也得至少4台嘛)

首页:

商品(商品详情应该都是生成的静态页面):

交易系统:

这些都实现了sso,在soa各个系统中user可以随意走

拦截器配置:

在需要user信息的时候肯定需要使用到拦截器,如果获取不到user信息,那么就跳转到登录页面,但是需要注意的是需要把原页面作为redirectUrl暂时保存,登陆成功后需要跳转

获取user的时候就是从cookie中读取token,调用sso服务从redis中查询用户信息,如果有则继续,没有则登录

淘宝的二级域名:

原文链接:https://www.cnblogs.com/leechenxiang/p/5475728.html

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

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

相关文章

ALGO-123_蓝桥杯_算法训练_A+B problem

问题描述Given two integers A and B, your task is to output their sum, AB. 输入格式The input contains of only one line, consisting of two integers A and B. (0 ≤ A,B ≤ 1 000) 输出格式The output should contain only one number that is AB. 样例输入 1 1 样例输…

微信JSAPI支付,报错当前页面的URL未注册

调用微信统一支付的接口,支付时报错: 解决方案: 打开微信商户平台,将当前页面的URL配置到JSAPI域名。

借助xxl-sso实现SSO

前言 市场上一下主流的SSO技术搭配方案: SpringSecurity OAuth2 SpringSecurity CAS 功能较弱,对前后端分离的项目支持不是很好Shiro CAS JWT 可以自定义需求,灵活扩展鉴权方式 本篇主要是单点登录,不涉及鉴权,后面…

工作277:v-model实战

<!-- 用栅格布局实现的单选框 --> <template><!--v-model默认绑定:value"value" change"value $event.target.value"--><el-radio-group :value"value" input"handleChange" style"width: 100%">…

C语言数组初始化的问题

转载于:https://www.cnblogs.com/chulin/p/8880184.html

blocked by CORS policy,是否跨域?

经排查不是跨域的问题&#xff0c;代码报错&#xff0c;改好就解决了 2021.10.20 项目上线又报错&#xff0c;测试环境一直没问题&#xff0c;上线了就报这个错&#xff0c;如果是前端代码的问题&#xff0c;那么使用测试接口的时候肯定也会报这个错&#xff0c;所以排除前端代…

工作278:控制数据从字典表获取

<el-form-item prop"role" label"角色" :label-width"formLabelWidth"><el-select v-model"form.role" placeholder"请选择角色"><el-option v-for"role in rolelist" :label"role.text&qu…

那些一眼就被看出包装过的简历

本文作者&#xff1a;Coody原文链接&#xff1a;https://my.oschina.net/hooker/blog/3014656 前言 在互联网极速膨胀的社会背景下&#xff0c;各行各业涌入互联网的IT民工日益增大。 早在2016年&#xff0c;我司发布了Java、Ios工程师的招聘信息&#xff0c;就Java工程师单个岗…

sql 查询优化小计

好久没更博了&#xff0c;偷偷的抽时间写一下。 早上开始working的时候&#xff0c;发现一个页面加载很慢&#xff0c;经排查是昨天写的一条联合查询的sql导致的。于是着手优化&#xff01; 首先想到的是在join的时候&#xff0c;减少表体积之后再进行关联&#xff0c;于是有了…

微信支付宝扫一扫进入小程序的相关配置

需求: 微信小程序和支付宝小程序,用微信和支付宝扫同一个普通二维码,支付宝扫码进入支付宝小程序指定页面,微信扫码进入微信小程序的指定页面。解决办法: 微信公众平台和支付宝开放平台都有自己的二维码配置规则。配置相同的规则,然后用配置的二维码地址加上参数,用草料…

工作279:控制退回的逻辑修改

this.$confirm(你正在进行退回操作, 提示, {confirmButtonText: 确定,cancelButtonText: 取消,type: warning}).then(() > {putAction(/task/ id /status, {status: -1}).then(res > {this.$message({message: 已被退回,type: success});this.list()})}).catch(() >…

重温Elasticsearch

什么是 Elasticsearch &#xff1f; Elasticsearch (ES) 是一个基于 Lucene 构建的开源、分布式、RESTful 接口全文搜索引擎。还是一个分布式文档数据库&#xff0c;其中每个字段均是被索引的数据且可被搜索&#xff0c;它能够扩展至数以百计的服务器存储以及处理PB级的数据。它…

unity之中级工程师

主要是实际操作。 Destroy(游戏对象)&#xff1a;会真正销毁游戏对象。 动态链接库 热更新&#xff1a;用户不需要更新整个项目&#xff0c;只需要更新需要更新的部分&#xff0c;使用AssetBundle。PC,Android可以使用逻辑热更新&#xff0c;将脚本利用反射打包成一个动态链接库…

芝麻信用综合评估未通过,请选择商户支持的其他方式使用服务

如题&#xff1a;公司小程序发布上线的时候报这个错&#xff0c;因为在测试接口的时候都是可用的&#xff0c;发布上线之后不行了&#xff0c;官方的案例及解决方案地址是&#xff1a;点击链接 给出的大致原因如下&#xff1a; 因为在测试接口时能正常使用&#xff0c;所以排除…

elasticsearch集群搭建-windows

1、下载elasticsearch到本地并解压 下载地址&#xff1a; https://www.elastic.co/cn/downloads/elasticsearch 解压之后复制两份&#xff0c;node1当作主节点&#xff0c;node2、node3当作从节点 2、修改主节点配置文件 而我们只需要修改 /config 目录下的 elasticsearch.yml …

vue如何新建一个项目(超详细哦--转)

原文链接 vue创建项目&#xff08;npm安装→初始化项目&#xff09; 第一步npm安装 首先&#xff1a;先从nodejs.org中下载nodejs 双击安装&#xff0c;在安装界面一直Next 直到Finish完成安装。 打开控制命令行程序&#xff08;CMD&#xff09;,检查是否正常 使用淘宝NPM …

工作281:时间戳转换问题

js 时间转换毫秒的四种方法&#xff08;转&#xff09; weixin_30730053 2018-08-14 11:45:00 2846 收藏 文章标签&#xff1a; 前端 java 数据库 版权将时间转换为毫秒数的方法有四个:Date.parse() Date.UTC valueOf() getTime() 1. Date.parse()&#xff1a;该方法接受一个表…

传统ELK分布式日志收集的缺点?

传统ELK图示&#xff1a; 单纯使用ElK实现分布式日志收集缺点&#xff1f; 1、logstash太多了&#xff0c;扩展不好。 如上图这种形式就是一个 tomcat 对应一个 logstash&#xff0c;新增一个节点就得同样的拥有 logstash&#xff0c;可以说很浪费了。 2、读取IO文件&#xff0…

css样式引入方式,及常用设置标签样式

一. 三种样式引入方式 1. 内联式-直接写在div标签中,不推荐用<div style"color:red;font-size:20px;font-family:Microsoft Yahei;line-height:30;"> 你好&#xff0c;我叫韩妹妹<br\> 你叫什么名字 </div>2. 内嵌式&#xff0c;一般用在首页&…

微信支付分开发流程

公司要用支付分信用免押功能&#xff0c;于是着手开发。 首先要与微信的技术人员对接&#xff0c;申请支付分功能&#xff0c;申请成功之后&#xff0c;会给商户发送服务ID&#xff1b;等1到3个工作日内自行登录商户平台查看是否有开通成功&#xff0c;如果3个工作日依旧没有支…