session同步问题,有经验的朋友帮忙解答下.TS!! 要求:一个tomcat下面跑两个项目,如何能够登录一个项目的后,跳转到另外一个项目时,能够同样显示用户已登录。 问题衍化:如何让一个tomcat下面的两个session进行同步控制,也就是说如何让两个应用程序有同一个session。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 单点登录 就可以 不需要共享session 蛋疼啊,搜了半天又配置了下,也不行~继续work~ 网上搜“SSO” 单点登录,很多解决方案,有简单的有复杂的,根据你的项目实际选取通常的做法是一台服务器做为登录的统一终端,用户信息都存放在这台服务器,其他用户的登录验证请求都由该终端代理,多个应用之间session复制保证用户信息的一致性存放用户信息有多种方式,放数据库或者现在比较流行的LDAP都可以,关键是对外统一的验证和鉴权接口 给你出个馊主意 你用memcached 把登录过的用户信息 存起来并存个时间戳防止用户异常退出当用户退出的时候 你从memcached 缓存服务器中删掉用户的信息就行了memcached 用起来就像是一个长连接的MAP集合 你可以试试 没有那么复杂,网上的是有很多方法,但是比较复杂,我的只是在一个tomcat中跨项目共享session,网上的一些介绍比较简单的方法配置了之后也没成功 求详解??可能配置SSO不管SESSION的事情,但是我最终想要的结果只是session共享 我印象中session是不能跨域的,两个不同域名的项目怎么能共享session? 其中一个项目 作为登陆入口 带入returnUrl ,然后利用cookie来共享登陆信息 问题已经解决了,我把最笨的解决方法写下来,给大家看。 (1)首先把tomcat/conf/server.xml文件的HOST标签中添加以下两行文本,暂定需要共享session的项目为test1、test2。 <Context path="/test1" reloadable="true" crossContext="true"></Context> <Context path="/test2" reloadable="true" crossContext="true"></Context> (2)在test1项目中添加以下代码 ServletContext ContextA =session.getServletContext(); ContextA.setAttribute("session", session); (3)从test2项目中取出来另外一个项目的session ServletContext Context = session.getServletContext(); ServletContext Context1= Context.getContext("/test1"); HttpSession session1 =(HttpSession)Context1.getAttribute("session"); 项目test2取出来的session实际上是test1的session 原理:实际上是通过应用服务器唯一的ServletContext对象实现的共享。 备注:真正的单点登录问题很深,有空再研究 SSL 单点登录 或者 在客户端写cookie 然后再读取 tomcat集群就可以做到了但是访问量大的时候,效率比较低…… 其实你可以用web service试试,你的问题目前是解决了,但是如果两个项目不在一个tomcat上运行,那岂不是还要改啊,web service可以是实现你的需求,而且可以跨服务器,建议你试试! 单点登录吧耶鲁大学的那个cas不错 两个项目在不在同一个tomcat上面的话,也可以选择集群,webservice确实是一个比较好的解决方案,但是有一点得不得不说的是,两个项目中一个项目的源码不可以修改,所以这个就很纠结~ spring文件上传求助 struts 参数问题,1到9能取到值,10个和10个以上的参数取不值 请高人指点,帮个忙(SAAS) @hibernate.query 配置问题 hibernate 无法save对象 struts中action类中设置setAttribute属性,在jsp页面中无法取出 (struts问题) jsp提交之后的do页面一片空白,请高人解惑 about struts jbuilderX 高分在线求CSDN论坛树型结构生成方法! 兼职项目经理,系统分析员,架构师 这是怎么回事? Struts2 在JSP页面获取不到setAttribute过来的参数
你用memcached 把登录过的用户信息 存起来并存个时间戳防止用户异常退出
当用户退出的时候 你从memcached 缓存服务器中删掉用户的信息就行了
memcached 用起来就像是一个长连接的MAP集合 你可以试试
没有那么复杂,网上的是有很多方法,但是比较复杂,我的只是在一个tomcat中跨项目共享session,网上的一些介绍比较简单的方法配置了之后也没成功
(1)首先把tomcat/conf/server.xml文件的HOST标签中添加以下两行文本,暂定需要共享session的项目为test1、test2。
<Context path="/test1" reloadable="true" crossContext="true"></Context>
<Context path="/test2" reloadable="true" crossContext="true"></Context>
(2)在test1项目中添加以下代码
ServletContext ContextA =session.getServletContext();
ContextA.setAttribute("session", session);
(3)从test2项目中取出来另外一个项目的session
ServletContext Context = session.getServletContext();
ServletContext Context1= Context.getContext("/test1");
HttpSession session1 =(HttpSession)Context1.getAttribute("session");
项目test2取出来的session实际上是test1的session
原理:实际上是通过应用服务器唯一的ServletContext对象实现的共享。
备注:真正的单点登录问题很深,有空再研究
但是访问量大的时候,效率比较低……
耶鲁大学的那个cas不错
两个项目在不在同一个tomcat上面的话,也可以选择集群,webservice确实是一个比较好的解决方案,但是有一点得不得不说的是,两个项目中一个项目的源码不可以修改,所以这个就很纠结~