mirror of
https://github.com/getrebuild/rebuild.git
synced 2024-09-20 23:45:55 +08:00
online-users
This commit is contained in:
parent
d510934061
commit
2f2f954278
|
@ -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)});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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}">
|
||||
|
|
|
@ -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">
|
||||
|
|
Loading…
Reference in a new issue