tomcat session 共享、 傻瓜式SSO
来源:互联网 发布:c语言cin 编辑:程序博客网 时间:2024/05/17 05:12
前阵用SSH2写了一个自己用的程序(A), 有一部分是重用的已有一个系统(B: SSI)的核心功能。 为了能在自己写的系统(A)中框架中直接引入另一系统(B)的功能页面。考虑过合并A B,但工作量估计也不小。于是考虑用共享SESSION达到效果。 两个应用同用的同一数据库。
(1)于是把两个应用放在同一tomcat下,虚拟路径设置了session共享;
<Context path="/a" reloadable="true" crossContext="true"></Context>
<Context path="/b" reloadable="true" crossContext="true"></Context>
(2)在B系统中加了一个过滤器取得A系统的相关信息,按B系统的要求重新注入session相关的信息。核心代码如下:
A系统某过滤器:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
HttpSession session = ((HttpServletRequest) request).getSession();
User user = (User) session.getAttribute(Constants.SESSION_USER_KEY);
if (user != null) {
...
} else {
...
}
User aUser = (User)session.getAttribute( "A_SESSION_USER" );
if( aUser == null && user != null ) {
UserDepartment aUserDept = new UserDepartment();
try{
aUser = new User();
......
} catch( Exception e ) {
e.printStackTrace();
}
session.setAttribute( "A_SESSION_USER_DEPT", aUserDept );
session.setAttribute( "A_SESSION_USER", aUser );
ServletContext ContextMybase = session.getServletContext();
ContextMybase.setAttribute( "ASession", session );
}
super.doFilter(request, response, filterChain);
}
B系统某过滤器:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
HttpSession session = ((HttpServletRequest) request).getSession();
User user = (User) session.getAttribute(Constants.SESSION_USER_KEY);
if( user == null ) {
ServletContext context = session.getServletContext().getContext( "/a" );
HttpSession spmsSession = (HttpSession)context.getAttribute( "ASession" );
Object spmsUser = spmsSession.getAttribute( "A_SESSION_USER" );
Object spmsUserDept = spmsSession.getAttribute( "A_SESSION_USER_DEPT" );
UserDepartment userDept = new UserDepartment();
user = new User();
try{
BeanUtils.copyProperties( user, spmsUser );
BeanUtils.copyProperties( userDept, spmsUserDept );
user.setMainDept( userDept );
} catch( Exception e ) {
e.printStackTrace();
}
session.setAttribute( Constants.SESSION_USER_KEY, user );
}
...
super.doFilter(request, response, filterChain);
}
- tomcat session 共享、 傻瓜式SSO
- 单点登录SSO-使用session共享方式
- tomcat下 共享session
- tomcat下 共享session
- tomcat下 共享session
- nginx+tomcat+session共享
- tomcat集群session共享
- Tomcat+Memcached Session共享
- tomcat session 共享
- nginx+tomcat+session共享
- nginx+tomcat+session共享
- tomcat session共享
- memcached+tomcat共享session
- tomcat session共享
- nginx+tomcat+session共享
- tomcat redis session 共享
- tomcat集群session共享
- tomcat session共享
- 10 10 31 每天都要做的事
- 推荐一款很好用的调试JS的Eclipse插件
- 虚拟机无法打开
- jQuery 取值赋值
- httpwebrequest的referer属性的一点认识
- tomcat session 共享、 傻瓜式SSO
- DirectX常用宏
- lunix下的常用系统函数---篇一
- [ php or jsp ] + jquery.imgareaselect 处理图片截图等比缩放!
- samba使用技巧
- Qt SDK安装时Post mortem debugger的含义是什么
- samba源码分析及配置详解
- 线段组成三角形的概率问题
- 每位开发人员都应铭记的10句编程谚语