From 172002c1d585191e5822f3da131ad9c6b2f9cb4e Mon Sep 17 00:00:00 2001 From: devezhao Date: Thu, 28 Feb 2019 18:08:41 +0800 Subject: [PATCH] #RB-16 --- .../com/rebuild/web/OnlineSessionStore.java | 13 ++++++++++++ .../web/user/signin/LoginControll.java | 21 ++++++++++++------- src/main/webapp/admin/bizuser/login-logs.jsp | 1 - .../admin/{datas => dataio}/importer.jsp | 0 4 files changed, 26 insertions(+), 9 deletions(-) rename src/main/webapp/admin/{datas => dataio}/importer.jsp (100%) diff --git a/src/main/java/com/rebuild/web/OnlineSessionStore.java b/src/main/java/com/rebuild/web/OnlineSessionStore.java index 73715fdf0..e2d382520 100644 --- a/src/main/java/com/rebuild/web/OnlineSessionStore.java +++ b/src/main/java/com/rebuild/web/OnlineSessionStore.java @@ -33,10 +33,15 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.util.Assert; +import com.rebuild.server.Application; +import com.rebuild.server.metadata.EntityHelper; import com.rebuild.server.service.bizz.CurrentCaller; +import com.rebuild.server.service.bizz.UserService; +import com.rebuild.web.user.signin.LoginControll; import cn.devezhao.commons.CalendarUtils; import cn.devezhao.commons.web.WebUtils; +import cn.devezhao.persist4j.Record; import cn.devezhao.persist4j.engine.ID; /** @@ -77,6 +82,14 @@ public class OnlineSessionStore extends CurrentCaller implements HttpSessionList } } } + + // Logout time + ID loginId = (ID) s.getAttribute(LoginControll.SK_LOGINID); + if (loginId != null) { + Record logout = EntityHelper.forUpdate(loginId, UserService.SYSTEM_USER); + logout.setDate("logoutTime", CalendarUtils.now()); + Application.getCommonService().update(logout); + } } // -- diff --git a/src/main/java/com/rebuild/web/user/signin/LoginControll.java b/src/main/java/com/rebuild/web/user/signin/LoginControll.java index 60a0f253f..83c036af3 100644 --- a/src/main/java/com/rebuild/web/user/signin/LoginControll.java +++ b/src/main/java/com/rebuild/web/user/signin/LoginControll.java @@ -54,11 +54,13 @@ import eu.bitwalker.useragentutils.UserAgent; @RequestMapping("/user/") public class LoginControll extends BasePageControll { - private static final String AUTOLOGIN_KEY = "rb.alt"; + public static final String CK_AUTOLOGIN = "rb.alt"; + + public static final String SK_LOGINID = WebUtils.KEY_PREFIX + ".LOGINID"; @RequestMapping("login") public ModelAndView checkLogin(HttpServletRequest request, HttpServletResponse response) throws IOException { - String alt = ServletUtils.readCookie(request, AUTOLOGIN_KEY); + String alt = ServletUtils.readCookie(request, CK_AUTOLOGIN); if (StringUtils.isNotBlank(alt)) { ID altUser = null; try { @@ -168,15 +170,16 @@ public class LoginControll extends BasePageControll { if (autoLogin) { String alt = user + "," + System.currentTimeMillis(); alt = AES.encrypt(alt); - ServletUtils.addCookie(response, AUTOLOGIN_KEY, alt, 60 * 60 * 24 * 30, null, "/"); + ServletUtils.addCookie(response, CK_AUTOLOGIN, alt, 60 * 60 * 24 * 30, null, "/"); } else { - ServletUtils.removeCookie(request, response, AUTOLOGIN_KEY); + ServletUtils.removeCookie(request, response, CK_AUTOLOGIN); } - loginLog(request, user); + ID loginId = loginLog(request, user); + ServletUtils.setSessionAttribute(request, SK_LOGINID, loginId); ServletUtils.setSessionAttribute(request, WebUtils.CURRENT_USER, user); - Application.getSessionStore().storeLoginSuccessed(request); + Application.getSessionStore().storeLoginSuccessed(request); } /** @@ -188,11 +191,13 @@ public class LoginControll extends BasePageControll { String ipAddr = ServletUtils.getRemoteAddr(request); String userAgent = request.getHeader("user-agent"); UserAgent ua = UserAgent.parseUserAgentString(userAgent); + String uaClean = String.format("%s-%s (%s)", ua.getBrowser(), + ua.getBrowserVersion().getMajorVersion(), ua.getOperatingSystem()); Record record = EntityHelper.forNew(EntityHelper.LoginLog, UserService.SYSTEM_USER); record.setID("user", user); record.setString("ipAddr", ipAddr); - record.setString("userAgent", ua.toString()); + record.setString("userAgent", uaClean); record.setDate("loginTime", CalendarUtils.now()); record = Application.getCommonService().create(record); return record.getPrimary(); @@ -200,7 +205,7 @@ public class LoginControll extends BasePageControll { @RequestMapping("logout") public void logout(HttpServletRequest request, HttpServletResponse response) throws IOException { - ServletUtils.removeCookie(request, response, AUTOLOGIN_KEY); + ServletUtils.removeCookie(request, response, CK_AUTOLOGIN); ServletUtils.getSession(request).invalidate(); response.sendRedirect("login?exit=0"); } diff --git a/src/main/webapp/admin/bizuser/login-logs.jsp b/src/main/webapp/admin/bizuser/login-logs.jsp index 6b669586d..1dc870226 100644 --- a/src/main/webapp/admin/bizuser/login-logs.jsp +++ b/src/main/webapp/admin/bizuser/login-logs.jsp @@ -47,7 +47,6 @@ - <%@ include file="/_include/Foot.jsp"%>