前言

继上一篇博文:可跨域的单点登录(SSO)实现方案【附.net代码】虽然实现了单点登录,也存在很多不合理的地方。很多热心的朋友也给出了很多指导性的意见,特别是 LoveCoder提出的意见。

在很多亲自操刀过单点登录的朋友看来,单点登录很简单啊,不过如此。但是还有很多如我一样刚刚接触过或者没有接触过单点登录的朋友却不清楚单点登录具体该怎么做。虽然网上单点登录的教程很多很多,大都是实现思路、实现原理,真正涉及到代码级别的实现细节却很少。

单点登录产生的原因是为了解决多个子系统共享登录状态的问题,每个人的思想或者能力不同,实现方式可能都不尽相同。好比过河,各有各的招,有的人坐船过去,还有人拽着绳蹚水过去的,安全吗?坐船船会漏,拽绳绳会断,怎么办?每个人身上再绑个救生圈,这样安全了吗?不见得。针对某个问题域我们每个人都想给出一个完美的解决方案,而现实往往是因为个人能力或者公司业务情况所限而做不到完美。我们只能做到首先要保证能解决存在的问题,然后针对使用情况做各种优化,好的系统是用出来的而不是设计出来的。

在这一篇博文中,主要优化的地方是:将轮询跳转写cookie到各个分站改为使用ajax分发写cookie到各个分站。

如有不正欢迎指教

改进方案

是在上一篇博文:可跨域的单点登录(SSO)实现方案【附.net代码】的基础上进行的改进,如有疑惑请先查看上篇博文。

改进后的单点登录交互效果如下:

具体代码如下:

1.sso.com登录验证方法不再重定向,而是输出一段js代码进行ajax分发

后台代码如下:

对应的试图页面如下:

2.各个分站jump方法的改变如下:

3.a.com和b.com中需要登录的action验证方式的优化:

总结

解决问题:

1.不需要各个分站之间来回跳转写cookie,而是在sso.com以ajax分发的形式向各个分站写cookie

2.代码更加干净

未解决问题:

1.按需写cookie

2.安全性验证

3.不支持ajax登录

代码下载

SSODemoPro_ajax.7z

单点登录改进版-使用ajax分发cookie避免重定向轮询的更多相关文章

  1. 可跨域的单点登录(SSO)实现方案【附.net代码】

    SSO简介 定义: 传统的单站点登录访问授权机制是:登录成功后将用户信息保存在session中,sessionId保存在cookie中,每次访问需要登录访问的资源(url)时判断当前session是否 ...

  2. [转] 可跨域的单点登录(SSO)实现方案

    SSO简介 定义: 传统的单站点登录访问授权机制是:登录成功后将用户信息保存在session中,sessionId保存在cookie中,每次访问需要登录访问的资源(url)时判断当前session是否 ...

  3. 可跨域的单点登录(SSO)实现方案

    可跨域的单点登录(SSO)实现方案 SSO简介 定义: 传统的单站点登录访问授权机制是:登录成功后将用户信息保存在session中,sessionId保存在cookie中,每次访问需要登录访问的资源( ...

  4. 单点登录,session,jsonp(待更新)

    单点登录理解: 单点登录系统设计: ajax跨域:

  5. 单点登录(SSO)详解

    背景 在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便.但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要多次 ...

  6. redis缓存+session 实现单点登录

    一.单点登录介绍 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系 ...

  7. 单点登录(SSO)解决方案介绍

    一.单点登录的介绍 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用 ...

  8. 单点登录(SSO)工作原理

    单点登录(SSO)工作原理 一.单点登录的介绍 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次 ...

  9. 前端单点登录(SSO)实现方法(二级域名与主域名)

    1.单点登录介绍 单点登录 SSO 全称 Singn Sign On .SSO 是指在多个应用系统中,用户只需要登录一次用户系统,就可以访问其他互相信任的应用系统.例如:在网易官网登录账户,那么再进入 ...

随机推荐

  1. sql 分组取最新的数据sqlserver巧用row_number和partition by分组取top数据

    SQL Server 2005后之后,引入了row_number()函数,row_number()函数的分组排序功能使这种操作变得非常简单 分组取TOP数据是T-SQL中的常用查询, 如学生信息管理系 ...

  2. 控制反转、依赖注入、Unity容器

    控制反转原则 依赖注入 Install-Package Unity:https://www.nuget.org/packages/Unity/ Github:https://github.com/un ...

  3. 对 Serializable和Parcelable理解

    1.首先他们两个接口都是为了实现对象的序列化,使之可以传递,所谓序列化就是将对象信息装换成可以存储的介质的过程. 2.Serializable是jdk所提供的序列化接口,该接口存在于io包下,可想用于 ...

  4. Android 手机卫士10--应用管理器

    1.添加不同类型条目 class MyAdapter extends BaseAdapter{ //获取数据适配器中条目类型的总数,修改成两种(纯文本,图片+文字) @Override public ...

  5. Singleton(单例模式)的一种实现 -- 基于【惰性】适用于【大对象】的一种生产实践

    一.说明 本文中的代码类,在生产中使用了很长的时间,曾应用于多个企业多个项目实践中,其中也踩了不少坑,总结了一些适用的业务情景, 重要的事情说三遍: a.本代码类不是万能药,不要在业务情景中滥用! b ...

  6. 记录一次Quartz2D学习(五)

    (四)内主要讲了绘制状态的保存与恢复 本次主要讲述 缩放,旋转,平移等操作 5.附加操作 5.1 旋转 TIP: 旋转操作主要是对本次渲染的图层进行旋转,旋转的中心为左上角顶点 - (void)dra ...

  7. Jsp的九个内置对象

    一.什么是内置对象?在jsp开发中,会频繁使用到一些对象.例如HttSession,ServletContext,HttpServletRequest.如果我们每次要使用这些对象都去创建这些对象,就会 ...

  8. 实现从Oracle增量同步数据到GreenPlum

    简介: GreenPlum是一个基于PostgreSQL数据库开发的MPP架构的数据库仓库,适用于OLAP系统,支持50PB(1PB=1000TB)级海量数据的存储和处理. 背景: 目前有一个业务是需 ...

  9. Spark——共享变量

    Spark执行不少操作时都依赖于闭包函数的调用,此时如果闭包函数使用到了外部变量驱动程序在使用行动操作时传递到集群中各worker节点任务时就会进行一系列操作: 1.驱动程序使将闭包中使用变量封装成对 ...

  10. MySql in子句 效率低下优化

    MySql in子句 效率低下优化 背景: 更新一张表中的某些记录值,更新条件来自另一张含有200多万记录的表,效率极其低下,耗时高达几分钟. where resid in ( ); 耗时 365s ...