XFEExtension.NetCore.ServerInteractive
[DLL] Server interaction extension, including user identity verification and querying in conjunction with AutoConfig
关注
0
Fork
0
Star
0
返回提交历史
Modified
XFEExtension.NetCore.ServerInteractive.Test/Program.cs
+17
-0
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Requester/Serviecs/ReloginRequestService.cs
+11
-3
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/CoreServerExceptionProcessService.cs
+5
-1
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/UserReloginService.cs
+8
-8
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/XFEClientRequesterBuilderExtensions.cs
+1
-1
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/XFEServerCoreBuilderExtensions.cs
+1
-1
Modified
XFEExtension.NetCore.ServerInteractive/XFEExtension.NetCore.ServerInteractive.csproj
+2
-2
XFEstudio/XFEExtension.NetCore.ServerInteractive
为服务器和客户端的用户校验登录服务添加泛型T,用以在校验登录时返回用户信息
10c2ed9
代码差异
7 个文件
+45
-16
@@ -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
{
@@ -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
@@ -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
}
@@ -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
}
@@ -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标准服务器服务请求
@@ -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>
@@ -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