我正在使用JSP
& Servlets
(容器:Tomcat7
,数据库:Oracle10
)
我开发了一些网络应用程序,例如Profile
,Reports
,Leads
。然后我开发了一个Login
应用程序。在这个应用程序中,我将 USERID 存储在Session
中,并增加了一些会话属性。
用户登录后,将显示菜单,其中包含指向其他应用程序的链接,例如Profile
应用程序的链接。
因此,当我在用户登录后访问Session
时:
Profiles
然后我将会话设为null
检查会话的代码段(登录Web应用程序中的Servlet过滤器)
HttpSession session = request.getSession(false);
if(session==null)
{
System.out.println("Session does not exist... Redirected to LOGIN Page.");
response.sendRedirect("/ApplicationName/Login.jsp");
}
我正在访问Profile
应用程序中的会话以检查用户是否已登录。
然后我搜索过,并且我发现出于安全原因无法从其他应用程序访问Session
。(我还发现可以通过设置crossContext="true"
来完成)
然后我找到了其他选项,例如制作所有应用的EAR
然后进行部署,但遗憾的是EAR
Tomcat7
不支持它。
我是网络环境的新手,所以如果有人在此之前就此工作过,请告诉我有什么选择?
提前致谢
UPDATE1
现在我已经决定使用EAR
,其中我将收集所有WAR
个文件,然后我将尝试在它们之间共享会话。由于Tomcat不支持EAR
我安装了Oracle Glassfish
,然后我创建了Enterprise Application Project
,其中包含两个应用1. Login
和2. Profiles
,然后创建了EAR
1}}文件,并将其部署在Glassfish
上。
所以我想分享这两个应用程序之间的会话(在Glassfish上),所以如果有人对它有任何想法,那么请告诉我。 (也欢迎链接到任何教程)
答案 0 :(得分:5)
如上所述,您要求的要求是单点登录(SSO)。您可以实现的最简单的SSO如下:
使用AES-256进行加密。
答案 1 :(得分:4)
我在商店里看到这种方式的方法是将登录凭据填入加密的cookie并在需要用户数据的应用程序前面安装代理(java过滤器,Web服务器模块等),这将解密cookie并将数据传递给下游应用程序。如果要跨应用程序共享登录信息,请不要在HTTP会话中存储登录信息。