User Management in Struts
Here’s some help for people trying to allow only SINGLE LOGIN AT A TIME by a SINGLE USERNAME. Meaning, if more than one user try to login with the SAME USERNAME, the LATEST USER who has logged in will remain logged in while the OLDER user will get logged out.
Please Note: I will give more explanation about the code soon. So please bear with me for a while. The code isnt optimum. I will modify it and post it again soon.
Write this code in the JSP file that is called on each page:
if (session.getAttribute(“userDetails”) != null ){
if (application.getAttribute(“users”) != null) {
Map users = new HashMap();
HttpSession ses = request.getSession(false);
if(ses.getAttribute(“userDetails”) != null) {
UserBean ub = new UserBean();
users = (Map)application.getAttribute(“users”);
ub = (UserBean)ses.getAttribute(“userDetails”);
String id = users.get(“”+ub.getId()).toString();
if (id.equalsIgnoreCase(session.getId().toString()) == false) {
ses.setAttribute(“logoutType”, “sessionExpired”);
response.sendRedirect(“sessionExpired.html”);
}
}
}
}
Write this code in the LoginAction:
if (loginName.equals(loginInfo.getLoginName()) && password.equals(loginInfo.getPassword())) {
sessionManager.getInstance(request).setAttribute(“userDetails”,loginInfo);
ServletContext sc = servlet.getServletConfig().getServletContext();
HttpSession session = request.getSession(true);
Map users = (Map)sc.getAttribute(“users”);
if (users == null)
users = new HashMap();
users.put(“”+loginInfo.getId(), “”+session.getId());
sc.setAttribute(“users”, users);
}