2011-12-14 102 views
1

我已经在使用Tomcat服务器,它被重定向到另一个网站的密码认证上运行的应用程序(和存储一些数据),然后重定向回我的Tomcat服务器会话变量重定向

EX

1至A
A到B
B到2

其中1和2是我的应用程序页面
A和B上的其他应用

我是我第1页使用

HttpSession session = request.getSession(true); 
session.setAttribute("loginUser", "loginUser"); 

上设置会话变量,并使用

String loginUser= session.getAttribute("loginUser"); 

使用它第2页,但得到2

+0

单点登录是一个更复杂的话题,您必须阅读。将sessionid传递给其他站点并不是一个好主意,但JSESSIONID = ...是可用的(最初用于非JavaScript浏览器)。 OpenID是SSO的完全其他方式,我喜欢。 – 2011-12-14 11:18:33

+0

1是创建会话的页面?启用了cookies吗?在1到A和B到2之间是什么时间? – 2011-12-14 11:20:00

+0

查看SSO解决方案(例如www.jasig.org CAS)。如果你想做到这一点,你可以尝试使用cookies而不是会话变量,尽管不如使用SSO ... – 2011-12-14 11:37:40

回答

1

如果你正在做在同一个上下文(应用程序)重定向,而使用RequestDispatcher做一个forward(通过你的requestresponse)。那样,你通过你的会话。

否则,我的建议是不在会话中存储loginUser,而是将用户ID变量作为一些智能(并且困惑)的字符串传递给其他应用程序,编写一种机制来检索用户登录会话状态并从那里。这就是所谓的单点登录。

0

一个空指针异常也可能是因为

'会话是暂时的,并且在下列情况之一发生时其生存期结束:

A user leaves your site and the user's browser does not accept cookies. 

A user quits the browser. 

The session is timed out due to inactivity. 

The session is completed and invalidated by the servlet. 

The user logs out and is invalidated by the servlet.' 

参考http://docs.oracle.com/cd/E15523_01/web.1111/e13712/sessions.htm

相关问题