online-users

This commit is contained in:
devezhao 2021-12-24 17:40:54 +08:00
parent d510934061
commit 2f2f954278
5 changed files with 18 additions and 6 deletions

View file

@ -7,6 +7,7 @@ See LICENSE and COMMERCIAL in the project root for license information.
package com.rebuild.web;
import cn.devezhao.commons.web.ServletUtils;
import cn.devezhao.commons.web.WebUtils;
import cn.devezhao.persist4j.engine.ID;
import com.rebuild.core.support.ConfigurationItem;
@ -103,7 +104,8 @@ public class OnlineSessionStore implements HttpSessionListener {
*/
public void storeLastActive(HttpServletRequest request) {
HttpSession s = request.getSession();
s.setAttribute(SK_LASTACTIVE, new Object[]{System.currentTimeMillis(), request.getRequestURI()});
s.setAttribute(SK_LASTACTIVE,
new Object[]{System.currentTimeMillis(), request.getRequestURI(), ServletUtils.getRemoteAddr(request)});
}
/**

View file

@ -260,7 +260,11 @@ public class RebuildWebInterceptor implements AsyncHandlerInterceptor, InstallSt
* @return
*/
private boolean isHtmlRequest(HttpServletRequest request) {
if (ServletUtils.isAjaxRequest(request) || request.getRequestURI().contains("/assets/")) {
String requestUri = request.getRequestURI();
if (ServletUtils.isAjaxRequest(request)
|| requestUri.contains("/assets/")
|| requestUri.contains("/commons/frontjs/")
|| requestUri.contains("/commons/theme/")) {
return false;
}

View file

@ -57,15 +57,15 @@ public class LoginLogController extends EntityController {
Object[] active = (Object[]) s.getAttribute(OnlineSessionStore.SK_LASTACTIVE);
if (active == null) {
active = new Object[]{ null, "/dashboard/home" };
active = new Object[]{ null, "/dashboard/home", null };
} else {
active = active.clone();
active[0] = I18nUtils.formatDate(new Date((Long) active[0]));
}
JSONObject item = JSONUtils.toJSONObject(
new String[] { "user", "fullName", "activeTime", "activeUrl" },
new Object[] { user, UserHelper.getName(user), active[0], active[1] });
new String[] { "user", "fullName", "activeTime", "activeUrl", "activeIp" },
new Object[] { user, UserHelper.getName(user), active[0], active[1], active[2] });
users.add(item);
}
return users;

View file

@ -3,6 +3,11 @@
<head>
<th:block th:replace="~{/_include/header}" />
<title>[[${bundle.L('登录日志')}]]</title>
<style>
.cell-detail-description span {
display: inline-block !important;
}
</style>
</head>
<body>
<div class="rb-wrapper rb-fixed-sidebar rb-collapsible-sidebar rb-collapsible-sidebar-hide-logo rb-color-header" th:classappend="${sideCollapsedClazz}">

View file

@ -8,7 +8,7 @@ See LICENSE and COMMERCIAL in the project root for license information.
$(document).ready(function () {
renderRbcomp(<DataList />, 'react-list')
$('.J_view-online').click(() => renderRbcomp(<OnlineUserViewer />))
$('.J_view-online').on('click', () => renderRbcomp(<OnlineUserViewer />))
})
// 列表配置
@ -89,6 +89,7 @@ class OnlineUserViewer extends RbModalHandler {
<code className="text-break text-primary">{item.activeUrl || 'n/a'}</code>
<span className="cell-detail-description">
<DateShow date={item.activeTime} />
<span className="ml-1">{item.activeIp}</span>
</span>
</td>
<td className="actions text-right">