>假设某人使用用户ID和密码登录应用程序。现在使用相同的用户 ID 和密码,他正在尝试登录而不从第一个会话注销。我想让它从第一个会话注销并自动继续新会话。
Struts2,JSP,Java是技术,我正在用于我的应用程序。
面临的问题
- 如果我们在新选项卡或窗口中打开,IE 8 在同一台机器中给出相同的会话 ID。无法区分来自同一台计算机的不同登录。如何设置自己的会话 ID?
- 像SBI网站这样的银行应用程序,所有应用程序都只是这样工作的,它是如何实时工作的?
- 我想复制与SBI银行网站在线交易相同的内容。如果在新窗口中再次打开,请在第一个窗口中发送消息会话
请让我知道这个日志记录部分的细节。谢谢。
这是我的过滤器
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("FirstFilter : In filter doFilter before doFilter...");
HttpServletRequest req = (HttpServletRequest) request ;
HttpServletResponse res = (HttpServletResponse) response ;
HttpSession session = req.getSession(false);
String userId=req.getParameter("username");
String password=req.getParameter("password");
System.out.println(" : : " + req.getParameter("username")) ;
System.out.println(" : " + req.getServletPath());
LoggedInUserVO userProfVOSession = null ;
if(session != null) {
String sessionId=session.getId();
userProfVOSession = (LoggedInUserVO)session.getAttribute("LoggedInUser") ;
//check for login id password and session for single user sign in
if(null!=userProfVOSession){
if(userProfVOSession.getUserName().equalsIgnoreCase(userId) && userProfVOSession.getUserPassword().equals(password) && userProfVOSession.getSessionId().equals(sessionId)){
//do nothing
}
else{
System.out.println("in duplicate");
}
}
}
if(userProfVOSession == null) {
if("/populatelogin.action".equals(req.getServletPath()) || "/login.action".equals(req.getServletPath())||"/images/Twalk-Logo-4-green.png".equals (req.getServletPath())||"css/twalk.css".equals( req.getServletPath() )) {
chain.doFilter(req, res) ;
} else {
req.getRequestDispatcher("Entryindex.jsp").forward(req, res) ;
}
} else {
chain.doFilter(req, res) ;
}
基本上,您的要求会导致 Web 安全漏洞。如果某人已登录,则其会话必须处于活动状态。现在场景是这样的:
如果您尝试使用相同的凭据再次登录,他将自动登录。如果你想在每次登录时都杀死旧会话,那么你需要做的是,每次登录时都需要获取一个新会话,所以你的旧会话将过期。只需编写筛选器即可实现此目的。在此过滤器中,检查用户是否已与会话关联,如果是,则使其当前会话无效并启动新会话。这将解决多次登录尝试的问题。
请记住,当会话启动时,服务器会向用户发送一个cookie。此后,对于每个后续请求,此cookie将被传输到服务器。即使您在浏览器中打开多个选项卡,也只会将相同的cookie发送回服务器。
希望我明白这一点。