XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension.NetCore.ServerInteractive

[DLL] Server interaction extension, including user identity verification and querying in conjunction with AutoConfig

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension.NetCore.ServerInteractive

为服务器和客户端的用户校验登录服务添加泛型T,用以在校验登录时返回用户信息

10c2ed9
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

7 个文件 +45 -16
Modified XFEExtension.NetCore.ServerInteractive.Test/Program.cs +17 -0
@@ -43,6 +43,23 @@ internal class Program
43 43 }
44 44 }
45 45
46 [SMTest]
47 public static async Task ReLogin()
48 {
49 var result = await xFEClientRequester.Request<UserFaceInfo>("relogin");
50 if (result.StatusCode == System.Net.HttpStatusCode.OK)
51 {
52 Console.WriteLine(result.Result.ID);
53 Console.WriteLine(result.Result.NickName);
54 Console.WriteLine(result.Result.PermissionLevel);
55 }
56 else
57 {
58 Console.WriteLine(result.StatusCode);
59 Console.WriteLine(result.Message);
60 }
61 }
62
46 63 //[SMTest]
47 64 public static string ConvertOrder()
48 65 {
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/Serviecs/ReloginRequestService.cs +11 -3
@@ -1,14 +1,22 @@
1 using XFEExtension.NetCore.ServerInteractive.Implements.Requester;
1 using System.Text.Json;
2 using XFEExtension.NetCore.ServerInteractive.Implements.Requester;
3 using XFEExtension.NetCore.ServerInteractive.Interfaces;
4 using XFEExtension.NetCore.ServerInteractive.Utilities.JsonConverter;
2 5
3 6 namespace XFEExtension.NetCore.ServerInteractive.Utilities.Requester.Serviecs;
4 7
5 8 /// <summary>
6 9 /// 登录校验请求服务
7 10 /// </summary>
8 public class ReloginRequestService : XFERequestServiceBase
11 public class ReloginRequestService<T> : XFERequestServiceBase where T : IUserFaceInfo
9 12 {
13 readonly JsonSerializerOptions jsonSerializerOptions = new();
14 /// <summary>
15 /// 登录校验请求服务
16 /// </summary>
17 public ReloginRequestService() => jsonSerializerOptions.Converters.Add(new JsonDateTimeConverter());
10 18 /// <inheritdoc/>
11 public override object AnalyzeResponse(string response) => true;
19 public override object AnalyzeResponse(string response) => JsonSerializer.Deserialize<T>(response, jsonSerializerOptions)!;
12 20
13 21 /// <inheritdoc/>
14 22 public override object PostRequest(string execute, params object[] parameters) => new
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/CoreServerExceptionProcessService.cs +5 -1
@@ -40,7 +40,11 @@ public class CoreServerExceptionProcessService : ServerCoreRegisterServiceBase
40 40 Console.WriteLine($"[WARN]【{e.CyberCommRequestEventArgs.ClientIP}】{errorMessage}");
41 41 if (e.ServerException?.StackTrace is not null)
42 42 Console.WriteLine($"[TRACE]{e.ServerException?.StackTrace}");
43 await e.CyberCommRequestEventArgs.ReplyAndClose(errorMessage, e.StatusCode);
43 try
44 {
45 await e.CyberCommRequestEventArgs.ReplyAndClose(errorMessage, e.StatusCode);
46 }
47 catch { }
44 48 }
45 49 }
46 50 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/UserReloginService.cs +8 -8
@@ -1,10 +1,11 @@
1 1 using System.Net;
2 using System.Text.Json;
3 using XFEExtension.NetCore.CyberComm;
2 using System.Text.RegularExpressions;
3 using XFEExtension.NetCore.ServerInteractive.Interfaces;
4 4 using XFEExtension.NetCore.ServerInteractive.Models.ServerModels;
5 5 using XFEExtension.NetCore.ServerInteractive.Models.UserModels;
6 6 using XFEExtension.NetCore.ServerInteractive.Utilities.Helpers;
7 7 using XFEExtension.NetCore.StringExtension;
8 using XFEExtension.NetCore.StringExtension.Json;
8 9 using XFEExtension.NetCore.XFETransform.JsonConverter;
9 10
10 11 namespace XFEExtension.NetCore.ServerInteractive.Utilities.Server.Services.CoreService;
@@ -12,13 +13,13 @@ namespace XFEExtension.NetCore.ServerInteractive.Utilities.Server.Services.CoreS
12 13 /// <summary>
13 14 /// 用户登录校验服务
14 15 /// </summary>
15 public class UserReloginService : ServerCoreUserServiceBase
16 public class UserReloginService<T> : ServerCoreUserServiceBase where T : IUserFaceInfo
16 17 {
17 18 /// <inheritdoc/>
18 public override Task StandardRequestReceived(string execute, QueryableJsonNode queryableJsonNode, ServerCoreReturnArgs r)
19 public override async Task StandardRequestReceived(string execute, QueryableJsonNode queryableJsonNode, ServerCoreReturnArgs r)
19 20 {
20 21 Console.Write($"【{r.Args.ClientIP}】校验登录请求:");
21 var session = queryableJsonNode["session"].ToString();
22 var session = Regex.Unescape(queryableJsonNode["session"].ToString());
22 23 Console.WriteLine(session);
23 24 var computerInfo = queryableJsonNode["computerInfo"].ToString();
24 25 if (session.IsNullOrWhiteSpace()) r.Error("Session值不能为空", HttpStatusCode.BadRequest);
@@ -27,11 +28,10 @@ public class UserReloginService : ServerCoreUserServiceBase
27 28 var userLoginModel = UserHelper.Decrypt<UserLoginModel>(encryptedUserLoginModel.Key, session, JsonSerializerOptions);
28 29 if (userLoginModel.UID.IsNullOrWhiteSpace() || userLoginModel.UID != encryptedUserLoginModel.UserLoginModel.UID)
29 30 r.Error("登录用户ID不匹配", HttpStatusCode.Forbidden);
30 if (!GetUserFunction().Any(user => user.ID == user.ID)) r.Error("用户ID未注册", HttpStatusCode.Forbidden);
31 var user = UserHelper.GetUser(userLoginModel.UID, GetUserFunction()) ?? throw r.GetError("用户ID未注册", HttpStatusCode.Forbidden);
31 32 if (userLoginModel.LastIPAddress != r.Args.ClientIP) r.Error("IP地址不匹配", HttpStatusCode.Forbidden);
32 33 if (userLoginModel.LastIPAddress != encryptedUserLoginModel.UserLoginModel.LastIPAddress) r.Error("IP地址不匹配", HttpStatusCode.Forbidden);
33 34 if (userLoginModel.EndDateTime < DateTime.Now) r.Error("登录已过期", HttpStatusCode.Forbidden);
34 r.Args.Close();
35 return Task.CompletedTask;
35 await r.Args.ReplyAndClose(((T)user).ToJson());
36 36 }
37 37 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/XFEClientRequesterBuilderExtensions.cs +1 -1
@@ -76,7 +76,7 @@ public static class XFEClientRequesterBuilderExtensions
76 76 /// <typeparam name="T">登录返回用户接口类型</typeparam>
77 77 /// <param name="xFEClientRequesterBuilder"></param>
78 78 /// <returns></returns>
79 public static XFEClientRequesterBuilder AddLoginRequest<T>(this XFEClientRequesterBuilder xFEClientRequesterBuilder) where T : IUserFaceInfo => xFEClientRequesterBuilder.AddXFERequest<LoginRequestService<T>>("login").AddXFERequest<ReloginRequestService>("relogin");
79 public static XFEClientRequesterBuilder AddLoginRequest<T>(this XFEClientRequesterBuilder xFEClientRequesterBuilder) where T : IUserFaceInfo => xFEClientRequesterBuilder.AddXFERequest<LoginRequestService<T>>("login").AddXFERequest<ReloginRequestService<T>>("relogin");
80 80
81 81 /// <summary>
82 82 /// 使用XFE标准服务器服务请求
Modified XFEExtension.NetCore.ServerInteractive/Utilities/XFEServerCoreBuilderExtensions.cs +1 -1
@@ -44,7 +44,7 @@ public static class XFEServerCoreBuilderExtensions
44 44 /// <param name="xFEServerCoreBuilder"></param>
45 45 /// <returns></returns>
46 46 public static XFEServerCoreBuilder AddStandardLoginService<T>(this XFEServerCoreBuilder xFEServerCoreBuilder) where T : IUserFaceInfo => xFEServerCoreBuilder.RegisterStandardAsyncService<UserLoginService<T>>("login")
47 .RegisterStandardAsyncService<UserReloginService>("relogin")
47 .RegisterStandardAsyncService<UserReloginService<T>>("relogin")
48 48 .AddService<UserLoginAutoCleanService>();
49 49
50 50 /// <summary>
Modified XFEExtension.NetCore.ServerInteractive/XFEExtension.NetCore.ServerInteractive.csproj +2 -2
@@ -5,7 +5,7 @@
5 5 <ImplicitUsings>enable</ImplicitUsings>
6 6 <Nullable>enable</Nullable>
7 7 <GenerateDocumentationFile>True</GenerateDocumentationFile>
8 <Version>1.0.3</Version>
8 <Version>1.0.4</Version>
9 9 <Title>XFEExtension.NetCore.ServerInteractive</Title>
10 10 <RepositoryUrl>https://github.com/XFEstudio/XFEExtension.NetCore.ServerInteractive</RepositoryUrl>
11 11 <AnalysisLevel>latest</AnalysisLevel>
@@ -21,7 +21,7 @@
21 21 <PackageReleaseNotes>
22 22 ## 调整
23 23
24 为服务器和客户端的用户登录服务添加泛型T,用以在登录时返回用户信息
24 为服务器和客户端的用户校验登录服务添加泛型T,用以在校验登录时返回用户信息
25 25
26 26 ## 新增
27 27