session

跨平台跨服务器跨网站SSO(单点登录)方案的DEMO

℡╲_俬逩灬. 提交于 2020-02-12 05:47:37
登录 1. 打开 A 网站进行登录; 2. 检测 Login 服务器是否可用; 3. 如果 Login 服务器可用,检测发现 Login 服务器 Session 未创建; 4. 重定向到 A 网站的页面,接受 Login 服务器传来的 Key 和 UID 组成的类序列化后的数据; 5. 得到的 Key 是 1 ,说明 Login 服务器 Session 未创建,在 A 网站创建 Session ,登录完成后使用 <script> 访问 Login 服务器上的页面创建 Session 并记录网站名和网站登出页面地址; 6. 打开 B 网站登录,发现没有登录,检测 Login 服务器是否可用; 7. 如果 Login 服务器可用,检测发现 Login 服务器 Session 已经创建并记录网站名和网站登出页面地址; 8. 重定向到 B 网站的页面,接受 Login 服务器传来的 Key 和 UID 组成的类序列化后的数据; 9. 得到的 Key 不是 1 ,说明 Login 服务器 Session 已经创建,根据 Key 到数据库进行验证,验证通过后在 B 网站创建 Session 。 登出 1. 每个网站都有登出按钮,点击按钮后先清空本地 Session ; 2. 然后检测 Login 服务器是否可用; 3. 可用的话跳转到 Login 服务器的登出页面; 4. 根据 Session

跨服务器session共享

杀马特。学长 韩版系。学妹 提交于 2020-02-12 05:47:29
1. 基于NFS的Session共享   NFS是Net FileSystem的简称,最早由Sun公司为解决Unix网络主机间的目录共享而研发。   这个方案实现最为简单,无需做过多的二次开发,仅需将共享目录服务器mount到各频道服务器的本地session目录即可,缺点是NFS依托 于复 杂的安全机制和文件系统,因此并发效率不高,尤其对于session这类高并发读写的小文件, 会由于共享目录服务器的io-wait过高,最终拖累前端WEB应用程序的执行效率。   2. 基于数据库的Session共享   首选当然是大名鼎鼎的Mysql数据库,并且建议使用内存表Heap,提高session操作的读写效率。这个方案的实用性比较强,相信大家普 遍在 使用,它的缺点在于session的并发读写能力取决于Mysql数据库的性能,同时需要自己实现session淘汰逻辑,以便定时从数据表中更新、删除 session记录,当并发过高时容易出现表锁,虽然我们可以选择行级锁的表引擎,但不得不否认使用数据库存储Session还是有些杀鸡用牛刀的架势。   3. 基于Cookie的Session共享   这个方案我们可能比较陌生,但它在大型网站中还是比较普遍被使用。原理是将全站用户的Session信息加密、序列化后以Cookie的方式, 统一 种植在根域名下(如:.host.com)

[导入]跨平台跨服务器跨网站SSO(单点登录)的方案

和自甴很熟 提交于 2020-02-12 05:38:17
最近在研究 SSO ,看到各种复杂的解决方案觉得很疑惑,自己想出了个简单有效的方案,大家来评评有什么问题吗? 服务器 A :网站 A 服务器 B :网站 B 服务器 C :验证网站(验证表中有 UID 和 KEY 两个字段)。 1. 用户打开网站 A 的页面 http:// 服务器 A/a.aspx ,检测发现网站 Session 中没有存储用户名 UID 。 2. 系统转到验证服务器登录页面,并在 QUERYSTRING 中附加前一个页面的 URL 地址。比如 http:// 服务器 C/login.asp?URL=http:// 服务器 A/a.aspx 3. 在验证服务器登录成功后更新验证服务器的 Session (超时设置为足够长,比如 1 天)。然后生成一个 GUID 值,写入验证表。最后,把这个 GUID 值和 UID 保存到一个类中序列化后附加在 URL 中返回网站 A 的那个页面。比如 http:// 服务器 A/a.aspx? token =sadhsagdkjasgyugd7d8yweihasdiuhagsdiuashdhaiushdi 4. 网站 A 的页面读取 QUERYSTRING ,然后反序列化出一个类,读取类的 UID 和 KEY 信息。然后,从数据库中查找匹配的记录,如果找到了则表明登录成功,并把这条记录的 KEY 更新成另外一个 GUID

Session共享的四种方法

南楼画角 提交于 2020-02-12 05:37:59
1. 基于NFS的Session共享   NFS是Net FileSystem的简称,最早由Sun公司为解决Unix网络主机间的目录共享而研发。   这个方案实现最为简单,无需做过多的二次开发,仅需将共享目录服务器mount到各频道服务器的本地session目录即可,缺点是NFS依托 于复 杂的安全机制和文件系统,因此并发效率不高,尤其对于session这类高并发读写的小文件, 会由于共享目录服务器的io-wait过高,最终拖累前端WEB应用程序的执行效率。 2. 基于数据库的Session共享   首选当然是大名鼎鼎的Mysql数据库,并且建议使用内存表Heap,提高session操作的读写效率。这个方案的实用性比较强,相信大家普 遍在 使用,它的缺点在于session的并发读写能力取决于Mysql数据库的性能,同时需要自己实现session淘汰逻辑,以便定时从数据表中更新、删除 session记录,当并发过高时容易出现表锁,虽然我们可以选择行级锁的表引擎,但不得不否认使用数据库存储Session还是有些杀鸡用牛刀的架势。 3. 基于Cookie的Session共享   这个方案我们可能比较陌生,但它在大型网站中还是比较普遍被使用。原理是将全站用户的Session信息加密、序列化后以Cookie的方式, 统一 种植在根域名下(如:.host.com)

MySQL主键和外键使用及说明

人盡茶涼 提交于 2020-02-12 05:29:36
摘自网上一个经典的例子:大哥和小弟 一、外键约束 MySQL通过外键约束来保证表与表之间的数据的完整性和准确性。 外键的使用条件:     1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);    2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;    3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以; 外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作; 外键的定义语法: [constraint symbol] foreign key [id] (index_col_name, ...) references tbl_name (index_col_name, ...) [on delete {restrict | cascade | set null | on action | set default}] [on update {restrict | cascade | set null | on action | set default}] 该语法可以在 create table 和 alter table 时使用,如果不指定constraint

Java--实现单点登录

℡╲_俬逩灬. 提交于 2020-02-12 04:26:12
1 什么是单点登陆 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服务。例如财务系统为财务人员提供财务的管理、计算和报表服务;人事系统为人事部门提供全公司人员的维护服务;各种业务系统为公司内部不同的业务提供不同的服务等等。这些系统的目的都是让计算机来进行复杂繁琐的计算工作,来替代人力的手工劳动,提高工作效率和质量。这些不同的系统往往是在不同的时期建设起来的,运行在不同的平台上;也许是由不同厂商开发,使用了各种不同的技术和标准。如果举例说国内一著名的IT公司(名字隐去),内部共有60多个业务系统,这些系统包括两个不同版本的SAP的ERP系统,12个不同类型和版本的数据库系统,8个不同类型和版本的操作系统,以及使用了3种不同的防火墙技术,还有数十种互相不能兼容的协议和标准,你相信吗?不要怀疑,这种情况其实非常普遍。每一个应用系统在运行了数年以后,都会成为不可替换的企业IT架构的一部分,如下图所示。 随着企业的发展,业务系统的数量在不断的增加,老的系统却不能轻易的替换,这会带来很多的开销。其一是管理上的开销,需要维护的系统越来越多。很多系统的数据是相互冗余和重复的

会话管理-2.2.Session共享

丶灬走出姿态 提交于 2020-02-12 04:25:44
1.为什么需要Session共享? 随着互联网的日益壮大,单服务器单数据库早已经不能满足实际需求。目前大多数大型网站的服务器都采用了分布式服务集群的部署方式,所谓集群,就是让一组计算机服务器协同工作,解决大并发,大数据量瓶颈问题。但是在服务集群中,session共享往往是一个比较头疼的问题。因为session是在服务器端保存的,如果用户跳转到其他服务器的话,session就会丢失。 如果你的网站是存放在一个机器上,那么是不存在这个问题的,因为会话数据就在这台机器,但是如果你使用了负载均衡把请求分发到不同的机器呢? 这个时候会话id在客户端是没有问题的,但是如果用户的两次请求到了两台不同的机器,而它的session数据可能存在其中一台机器,这个时候就会出现取不到session数据的情况,于是session的共享就成了一个问题。 传统的应用服务器,如tomcat、jboss等,其自身所实现的session管理大部分都是基于单机的, 对于大型分布式网站来说,支撑其业务的远远不止一台服务器,而是一个分布式集群, 请求在不同服务器之间跳转。那么,如何保持服务器之间的session同步呢? 2.如何实现Session共享? Session共享有多种解决方法,常用的有四种:客户端Cookie保存、服务器间Session同步、使用集群管理Session、把Session持久化到数据库。 2.1

使用php生成数字、字母组合验证码(一)

妖精的绣舞 提交于 2020-02-12 03:13:49
项目中经常会遇到一些登陆验证,支付验证等等一系列安全验证的策略。实现方法多种多样,下面就来讲解下如何用php生成简单的文字+数字组合的验证码: 所用语言php,gd库 原理解释: a>实质上是在服务器端随机生成验证码,将其存储在$_SESSION中。 b>然后将验证码写在图片上,将图片发送至客户端,用户输入图片的上的验证码,递交给服务器。 c>服务端再与$_SESSION中存储的信息比对,一致则通过,否则不通过。 分为两步: 1)第一步服务器端生成验证码 2)客户端使用验证码 第一步:在服务器端如何生成验证码:< code.php > <?php session_start(); //1>session_start()必须置于最顶部,2>多服务器,要考虑集中管理session信息 //phpinfo();//打印出php的信息 //1.生成一张底图(width:100;height:30) $image=imagecreatetruecolor(100,30); $bgcolor=imagecolorallocate($image,255,255,255);//画笔着色 imagefill($image,0,0,$bgcolor);//将底图的着色 //随机生成四个数字 /* for($i=0;$i<4;$i++){ $fontcolor=imagecolorallocate(

如何实现session的共享?

99封情书 提交于 2020-02-12 03:10:11
1、以cookie加密的方式保存在客户端.   优点是 减轻服务器端的压力   缺点是 受到cookie的大小限制 ,可能占用一定带宽,因为每次请求会在头部附带一定大小的cookie信息,另外这种方式在用户 禁止使用cookie的情况 下无效 2、服务器间同步。定时同步各个服务器的session信息,此方法可能有一定延时,用户体验也不是很好 3、基于Cookie的Session共享 这个方案我们可能比较陌生,但它在大型网站中还是比较普遍被使用。原理是将全站用户的Session信息加密、序列化后以Cookie的方式,统一种植在根域名下(如:.host.com),利用浏览器访问该根域名下的所有二级域名站点时,会传递与之域名对应的所有Cookie内容的特性,从而实现用户的Cookie化Session 在多服务间的共享访问。 优点无需额外的服务器资源; 缺点是由于受http协议头信心长度的限制,仅能够存储小部分的用户信息,同时Cookie化的 Session内容需要进行安全加解密,另外它也会占用一定的带宽资源,因为浏览器会在请求当前域名下任何资源时将本地Cookie附加在http头中传递到服务器。 4、 基于数据库的Session共享 首选当然是大名鼎鼎的 MySQL 数据库,并且建议使用内存表Heap,提高session操作的读写效率。这个方案的实用性比较强,相信大家普遍在使用

Java基础

為{幸葍}努か 提交于 2020-02-12 02:21:34
文章目录 1. JSON 1.1 常用JSON解析框架 1.2 使用fastjson解析json 2. XML 2.1 XML样例 2.2 XML解析方式 2.3 Dom4j与Sax区别 2.4 使用dom4j解析xml 三. 注解 3.1 内置注解 3.2 自定义注解 四. Socket 4.1 UDP协议 4.2 TCP握手协议(三次握手,四次分手) 五、Session与Cookie(自定义Session) 5.1 Cooke技术 5.2 Session技术 5.3 自定义缓存 六、自定义Token 七、表单重复提交解决方案(防止Http重复提交) 7.1 使用javascript 解决 7.2 使用后端提交解决 八、Servlet之Fileter 九、深入理解Http协议 9.1 GET与POST的区别 9.2 防止非法链接(referer) 9.3 获取请求参数 9.4 Http与Https 七、http请求 7.4 跨域实战解决方案 07-Java网络编程之socket 06-自定义注解与设计模式、 05-数据交换格式与SpringIOC底层实现、 11-Session与Cokile实现原理、 12-深入理解Http协议 1. JSON 1.1 常用JSON解析框架 fastjson (阿里)、 gson (谷歌)、 jackson (SpringMVC自带) 1.2