This commit is contained in:
devezhao 2019-02-28 18:08:41 +08:00
parent f9534e9c5c
commit 172002c1d5
4 changed files with 26 additions and 9 deletions

View file

@ -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);
}
}
// --

View file

@ -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");
}

View file

@ -47,7 +47,6 @@
</div>
</div>
</div>
<%@ include file="/_include/Foot.jsp"%>
<script>
window.__PageConfig = {