diff --git a/src/admin/Bootstrap.Admin/Pages/Extensions/DisplayNamesExtensions.cs b/src/admin/Bootstrap.Admin/Pages/Extensions/DisplayNamesExtensions.cs index 3fd12411..73de37b4 100644 --- a/src/admin/Bootstrap.Admin/Pages/Extensions/DisplayNamesExtensions.cs +++ b/src/admin/Bootstrap.Admin/Pages/Extensions/DisplayNamesExtensions.cs @@ -1,6 +1,7 @@ using Bootstrap.DataAccess; using Bootstrap.Security; using Longbow.Cache; +using Longbow.Web; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Concurrent; @@ -50,6 +51,19 @@ namespace Microsoft.AspNetCore.Builder _displayNameCache.TryAdd((typeof(CacheItem), nameof(CacheItem.Interval)), "缓存时长(秒)"); _displayNameCache.TryAdd((typeof(CacheItem), nameof(CacheItem.ElapsedSeconds)), "已过时长(秒)"); _displayNameCache.TryAdd((typeof(CacheItem), nameof(CacheItem.Desc)), "缓存说明"); + + _displayNameCache.TryAdd((typeof(OnlineUser), nameof(OnlineUser.ConnectionId)), "会话Id"); + _displayNameCache.TryAdd((typeof(OnlineUser), nameof(OnlineUser.UserName)), "登录名称"); + _displayNameCache.TryAdd((typeof(OnlineUser), nameof(OnlineUser.DisplayName)), "显示名称"); + _displayNameCache.TryAdd((typeof(OnlineUser), nameof(OnlineUser.FirstAccessTime)), "登录时间"); + _displayNameCache.TryAdd((typeof(OnlineUser), nameof(OnlineUser.LastAccessTime)), "访问时间"); + _displayNameCache.TryAdd((typeof(OnlineUser), nameof(OnlineUser.Method)), "请求方式"); + _displayNameCache.TryAdd((typeof(OnlineUser), nameof(OnlineUser.Ip)), "主机"); + _displayNameCache.TryAdd((typeof(OnlineUser), nameof(OnlineUser.Location)), "登录地点"); + _displayNameCache.TryAdd((typeof(OnlineUser), nameof(OnlineUser.Browser)), "浏览器"); + _displayNameCache.TryAdd((typeof(OnlineUser), nameof(OnlineUser.OS)), "操作系统"); + _displayNameCache.TryAdd((typeof(OnlineUser), nameof(OnlineUser.RequestUrl)), "访问地址"); + return services; } diff --git a/src/admin/Bootstrap.Admin/Pages/Views/Admin/Online.razor b/src/admin/Bootstrap.Admin/Pages/Views/Admin/Online.razor new file mode 100644 index 00000000..960e0faf --- /dev/null +++ b/src/admin/Bootstrap.Admin/Pages/Views/Admin/Online.razor @@ -0,0 +1,37 @@ +@inherits OnlineBase + +
+
+
+ 在线用户 +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
@context.ConnectionId@context.UserName@context.DisplayName@context.FirstAccessTime@context.LastAccessTime@context.Method@context.Ip@context.Location@context.Browser@context.OS
+
+
\ No newline at end of file diff --git a/src/admin/Bootstrap.Admin/Pages/Views/Components/OnlineBase.cs b/src/admin/Bootstrap.Admin/Pages/Views/Components/OnlineBase.cs new file mode 100644 index 00000000..2d35ce0b --- /dev/null +++ b/src/admin/Bootstrap.Admin/Pages/Views/Components/OnlineBase.cs @@ -0,0 +1,29 @@ +using Longbow.Web; +using Microsoft.AspNetCore.Components; +using System.Collections.Generic; +using System.Linq; + +namespace Bootstrap.Admin.Pages.Views.Admin.Components +{ + /// + /// 网站设置组件 + /// + public class OnlineBase : ComponentBase + { + /// + /// 获得 EditModel 实例 + /// + protected OnlineUser EditModel { get; set; } = new OnlineUser(); + + /// + /// IOnlineUsers 实例 + /// + [Inject] + public IOnlineUsers? OnlineUSers { get; set; } + + /// + /// QueryData 方法 + /// + protected IEnumerable QueryData() => (OnlineUSers?.OnlineUsers ?? new OnlineUser[0]).OrderByDescending(u => u.LastAccessTime); + } +}