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.TServer/Program.cs
+3
-2
Modified
XFEExtension.NetCore.ServerInteractive.Test/Program.cs
+13
-8
Added
XFEExtension.NetCore.ServerInteractive/Models/RequesterModels/UserLoginResult.cs
+27
-0
Added
XFEExtension.NetCore.ServerInteractive/Models/UserFaceInfo.cs
+16
-0
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Helpers/UserHelper.cs
+2
-2
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Requester/Serviecs/LoginRequestService.cs
+15
-7
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/UserLoginService.cs
+6
-3
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/XFEClientRequesterBuilderExtensions.cs
+5
-2
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/XFEServerCoreBuilderExtensions.cs
+8
-4
Modified
XFEExtension.NetCore.ServerInteractive/XFEExtension.NetCore.ServerInteractive.csproj
+2
-2
XFEstudio/XFEExtension.NetCore.ServerInteractive
为服务器和客户端的用户登录服务添加泛型T,用以在登录时返回用户信息
88d878f
代码差异
10 个文件
+97
-30
@@ -1,4 +1,5 @@
1
using XFEExtension.NetCore.ServerInteractive.Models.UserModels;
1
using XFEExtension.NetCore.ServerInteractive.Interfaces;
2
using XFEExtension.NetCore.ServerInteractive.Models.UserModels;
2
3
using XFEExtension.NetCore.ServerInteractive.TServer;
3
4
using XFEExtension.NetCore.ServerInteractive.TServer.Models;
4
5
using XFEExtension.NetCore.ServerInteractive.TServer.Profiles;
@@ -10,7 +11,7 @@ var server = XFEServerBuilder.CreateBuilder() //创建服务器构建器
10
11
.UseXFEServer() //使用XFE服务器架构
11
12
.AddCoreServer( //添加核心服务器
12
13
XFEServerCoreBuilder.CreateBuilder() //创建核心服务器构建器
13
.UseXFEStandardServerCore( //使用XFE标准服务器核心
14
.UseXFEStandardServerCore<IUserFaceInfo>( //使用XFE标准服务器核心
14
15
static () => UserProfile.UserTable, //获取用户表的方法
15
16
static () => UserProfile.EncryptedUserLoginModelTable, //获取用户加密模型的方法
16
17
UserProfile.EncryptedUserLoginModelTable.Add, //添加用户加密模型的方法
@@ -1,4 +1,6 @@
1
1
using System.Text.Json;
2
using XFEExtension.NetCore.ServerInteractive.Models;
3
using XFEExtension.NetCore.ServerInteractive.Models.RequesterModels;
2
4
using XFEExtension.NetCore.ServerInteractive.TServer.Models;
3
5
using XFEExtension.NetCore.ServerInteractive.Utilities;
4
6
using XFEExtension.NetCore.ServerInteractive.Utilities.Helpers;
@@ -7,14 +9,14 @@ using XFEExtension.NetCore.ServerInteractive.Utilities.Requester;
7
9
internal class Program
8
10
{
9
11
static readonly XFEClientRequester xFEClientRequester = XFEClientRequesterBuilder.CreateBuilder("http://localhost:8080/api", string.Empty, DeviceHelper.GetUniqueHardwareId())
10
.UseXFEStandardRequest()
12
.UseXFEStandardRequest<UserFaceInfo>()
11
13
.Build();
12
14
13
15
static readonly TableRequester tableRequester = new();
14
16
15
17
static Program() => xFEClientRequester.MessageReceived += XFEClientRequester_MessageReceived;
16
18
17
private static void XFEClientRequester_MessageReceived(object? sender, XFEExtension.NetCore.ServerInteractive.Models.RequesterModels.ServerInteractiveEventArgs e)
19
private static void XFEClientRequester_MessageReceived(object? sender, ServerInteractiveEventArgs e)
18
20
{
19
21
Console.WriteLine($"请求完成:{e.StatusCode}\t{e.Message}");
20
22
}
@@ -22,13 +24,16 @@ internal class Program
22
24
[SMTest("Admin", "123456")]
23
25
public static async Task Login(string account, string password)
24
26
{
25
var result = await xFEClientRequester.Request<(string session, DateTime expireDate)>("login", account, password);
27
var result = await xFEClientRequester.Request<UserLoginResult<UserFaceInfo>>("login", account, password);
26
28
if (result.StatusCode == System.Net.HttpStatusCode.OK)
27
29
{
28
Console.WriteLine(result.Result.session);
29
Console.WriteLine(result.Result.expireDate);
30
Console.WriteLine(result.Result.Session);
31
Console.WriteLine(result.Result.ExpireDate);
32
Console.WriteLine(result.Result.UserInfo.ID);
33
Console.WriteLine(result.Result.UserInfo.NickName);
34
Console.WriteLine(result.Result.UserInfo.PermissionLevel);
30
35
tableRequester.RequestAddress = xFEClientRequester.RequestAddress;
31
tableRequester.Session = result.Result.session;
36
tableRequester.Session = result.Result.Session;
32
37
tableRequester.ComputerInfo = xFEClientRequester.ComputerInfo;
33
38
}
34
39
else
@@ -49,14 +54,14 @@ internal class Program
49
54
return JsonSerializer.Serialize(order);
50
55
}
51
56
52
[SMTest]
57
//[SMTest]
53
58
public static async Task<bool> AddOrder() => await tableRequester.Add<Order>(new()
54
59
{
55
60
Description = "测试订单的描述",
56
61
Name = "测试订单"
57
62
});
58
63
59
[SMTest]
64
//[SMTest]
60
65
public static async Task GetOrder()
61
66
{
62
67
var result = await tableRequester.Get<Order>();
@@ -0,0 +1,27 @@
1
using System.Text.Json.Serialization;
2
using XFEExtension.NetCore.ServerInteractive.Interfaces;
3
4
namespace XFEExtension.NetCore.ServerInteractive.Models.RequesterModels;
5
6
/// <summary>
7
/// 用户登录结果
8
/// </summary>
9
/// <typeparam name="T">登录返回用户接口类型</typeparam>
10
public class UserLoginResult<T> where T : IUserFaceInfo
11
{
12
/// <summary>
13
/// 用户登录Session
14
/// </summary>
15
[JsonPropertyName("session")]
16
public string Session { get; set; } = string.Empty;
17
/// <summary>
18
/// 用户登录到期日期
19
/// </summary>
20
[JsonPropertyName("expireDate")]
21
public DateTime ExpireDate { get; set; }
22
/// <summary>
23
/// 用户信息
24
/// </summary>
25
[JsonPropertyName("userInfo")]
26
public T UserInfo { get; set; } = default!;
27
}
@@ -0,0 +1,16 @@
1
using XFEExtension.NetCore.ServerInteractive.Interfaces;
2
3
namespace XFEExtension.NetCore.ServerInteractive.Models;
4
5
/// <summary>
6
/// 用户接口信息
7
/// </summary>
8
public class UserFaceInfo : IUserFaceInfo
9
{
10
/// <inheritdoc/>
11
public string ID { get; set; } = string.Empty;
12
/// <inheritdoc/>
13
public string NickName { get; set; } = string.Empty;
14
/// <inheritdoc/>
15
public int PermissionLevel { get; set; }
16
}
@@ -18,7 +18,7 @@ public static class UserHelper
18
18
/// <param name="id"></param>
19
19
/// <param name="userInfoList"></param>
20
20
/// <returns></returns>
21
public static IUserInfo? GetUser(string id, IEnumerable<IUserInfo> userInfoList) => userInfoList.FirstOrDefault(user => user.ID == id);
21
public static IUserFaceInfo? GetUser(string id, IEnumerable<IUserFaceInfo> userInfoList) => userInfoList.FirstOrDefault(user => user.ID == id);
22
22
23
23
/// <summary>
24
24
/// 获取用户(通过Session)
@@ -31,7 +31,7 @@ public static class UserHelper
31
31
/// <param name="userInfoList"></param>
32
32
/// <param name="user"></param>
33
33
/// <returns></returns>
34
public static UserOperateResult GetUser(string sessionId, string computerInfo, string ipAddress, JsonSerializerOptions? jsonSerializerOptions, IEnumerable<EncryptedUserLoginModel> encryptedUserLoginModels, IEnumerable<IUserInfo> userInfoList, out IUserInfo? user)
34
public static UserOperateResult GetUser(string sessionId, string computerInfo, string ipAddress, JsonSerializerOptions? jsonSerializerOptions, IEnumerable<EncryptedUserLoginModel> encryptedUserLoginModels, IEnumerable<IUserFaceInfo> userInfoList, out IUserInfo? user)
35
35
{
36
36
user = null;
37
37
if (encryptedUserLoginModels.FirstOrDefault(user => user.UserLoginModel.ComputerInfo == computerInfo) is not EncryptedUserLoginModel encryptedUserLoginModel)
@@ -1,20 +1,28 @@
1
using XFEExtension.NetCore.ServerInteractive.Implements.Requester;
2
using XFEExtension.NetCore.XFETransform.JsonConverter;
1
using System.Text.Json;
2
using XFEExtension.NetCore.ServerInteractive.Implements.Requester;
3
using XFEExtension.NetCore.ServerInteractive.Interfaces;
4
using XFEExtension.NetCore.ServerInteractive.Models.RequesterModels;
5
using XFEExtension.NetCore.ServerInteractive.Utilities.JsonConverter;
3
6
4
7
namespace XFEExtension.NetCore.ServerInteractive.Utilities.Requester.Serviecs;
5
8
6
9
/// <summary>
7
10
/// 登录请求服务
8
11
/// </summary>
9
public class LoginRequestService : XFERequestServiceBase
12
public class LoginRequestService<T> : XFERequestServiceBase where T : IUserFaceInfo
10
13
{
14
readonly JsonSerializerOptions jsonSerializerOptions = new();
15
/// <summary>
16
/// 登录请求服务
17
/// </summary>
18
public LoginRequestService() => jsonSerializerOptions.Converters.Add(new JsonDateTimeConverter());
19
11
20
/// <inheritdoc/>
12
21
public override object AnalyzeResponse(string response)
13
22
{
14
QueryableJsonNode jsonNode = response;
15
string session = jsonNode["session"];
16
XFEClientRequester.Session = session;
17
return (session, DateTime.Parse(jsonNode["expireDate"]));
23
var result = JsonSerializer.Deserialize<UserLoginResult<T>>(response, jsonSerializerOptions);
24
XFEClientRequester.Session = result!.Session;
25
return result;
18
26
}
19
27
20
28
/// <inheritdoc/>
@@ -1,4 +1,5 @@
1
1
using System.Net;
2
using XFEExtension.NetCore.ServerInteractive.Interfaces;
2
3
using XFEExtension.NetCore.ServerInteractive.Models.ServerModels;
3
4
using XFEExtension.NetCore.ServerInteractive.Models.UserModels;
4
5
using XFEExtension.NetCore.ServerInteractive.Utilities.Helpers;
@@ -11,7 +12,7 @@ namespace XFEExtension.NetCore.ServerInteractive.Utilities.Server.Services.CoreS
11
12
/// <summary>
12
13
/// 用户登录服务
13
14
/// </summary>
14
public class UserLoginService : ServerCoreUserServiceBase
15
public class UserLoginService<T> : ServerCoreUserServiceBase where T : IUserFaceInfo
15
16
{
16
17
/// <inheritdoc/>
17
18
public override async Task StandardRequestReceived(string execute, QueryableJsonNode queryableJsonNode, ServerCoreReturnArgs r)
@@ -44,7 +45,8 @@ public class UserLoginService : ServerCoreUserServiceBase
44
45
await r.Args.ReplyAndClose(new
45
46
{
46
47
session = UserHelper.Encrypt(userLogin.Key, userLogin.UserLoginModel),
47
expireDate = userLogin.UserLoginModel.EndDateTime
48
expireDate = userLogin.UserLoginModel.EndDateTime,
49
userInfo = (T)user
48
50
}.ToJson(), HttpStatusCode.OK);
49
51
}
50
52
else
@@ -56,7 +58,8 @@ public class UserLoginService : ServerCoreUserServiceBase
56
58
await r.Args.ReplyAndClose(new
57
59
{
58
60
session = UserHelper.Encrypt(userLogin.Key, userLogin.UserLoginModel),
59
expireDate = userLogin.UserLoginModel.EndDateTime
61
expireDate = userLogin.UserLoginModel.EndDateTime,
62
userInfo = (T)user
60
63
}.ToJson(), HttpStatusCode.OK);
61
64
}
62
65
}
@@ -1,4 +1,5 @@
1
1
using System.Text.Json;
2
using XFEExtension.NetCore.ServerInteractive.Interfaces;
2
3
using XFEExtension.NetCore.ServerInteractive.Models;
3
4
using XFEExtension.NetCore.ServerInteractive.Utilities.JsonConverter;
4
5
using XFEExtension.NetCore.ServerInteractive.Utilities.Requester;
@@ -72,16 +73,18 @@ public static class XFEClientRequesterBuilderExtensions
72
73
/// <summary>
73
74
/// 添加登录服务
74
75
/// </summary>
76
/// <typeparam name="T">登录返回用户接口类型</typeparam>
75
77
/// <param name="xFEClientRequesterBuilder"></param>
76
78
/// <returns></returns>
77
public static XFEClientRequesterBuilder AddLoginRequest(this XFEClientRequesterBuilder xFEClientRequesterBuilder) => xFEClientRequesterBuilder.AddXFERequest<LoginRequestService>("login").AddXFERequest<ReloginRequestService>("relogin");
79
public static XFEClientRequesterBuilder AddLoginRequest<T>(this XFEClientRequesterBuilder xFEClientRequesterBuilder) where T : IUserFaceInfo => xFEClientRequesterBuilder.AddXFERequest<LoginRequestService<T>>("login").AddXFERequest<ReloginRequestService>("relogin");
78
80
79
81
/// <summary>
80
82
/// 使用XFE标准服务器服务请求
81
83
/// </summary>
84
/// <typeparam name="T">登录返回用户接口类型</typeparam>
82
85
/// <param name="xFEClientRequesterBuilder"></param>
83
86
/// <returns></returns>
84
public static XFEClientRequesterBuilder UseXFEStandardRequest(this XFEClientRequesterBuilder xFEClientRequesterBuilder) => xFEClientRequesterBuilder.AddLoginRequest()
87
public static XFEClientRequesterBuilder UseXFEStandardRequest<T>(this XFEClientRequesterBuilder xFEClientRequesterBuilder) where T : IUserFaceInfo => xFEClientRequesterBuilder.AddLoginRequest<T>()
85
88
.AddBannedIpRequest()
86
89
.AddLogRequest()
87
90
.AddCheckConnectRequest();
@@ -1,4 +1,5 @@
1
using XFEExtension.NetCore.ServerInteractive.Models.UserModels;
1
using XFEExtension.NetCore.ServerInteractive.Interfaces;
2
using XFEExtension.NetCore.ServerInteractive.Models.UserModels;
2
3
using XFEExtension.NetCore.ServerInteractive.Utilities.DataTable;
3
4
using XFEExtension.NetCore.ServerInteractive.Utilities.Server;
4
5
using XFEExtension.NetCore.ServerInteractive.Utilities.Server.Services.CoreService;
@@ -39,9 +40,10 @@ public static class XFEServerCoreBuilderExtensions
39
40
/// <summary>
40
41
/// 使用XFE标准登录服务
41
42
/// </summary>
43
/// <typeparam name="T">登录返回用户接口类型</typeparam>
42
44
/// <param name="xFEServerCoreBuilder"></param>
43
45
/// <returns></returns>
44
public static XFEServerCoreBuilder AddStandardLoginService(this XFEServerCoreBuilder xFEServerCoreBuilder) => xFEServerCoreBuilder.RegisterStandardAsyncService<UserLoginService>("login")
46
public static XFEServerCoreBuilder AddStandardLoginService<T>(this XFEServerCoreBuilder xFEServerCoreBuilder) where T : IUserFaceInfo => xFEServerCoreBuilder.RegisterStandardAsyncService<UserLoginService<T>>("login")
45
47
.RegisterStandardAsyncService<UserReloginService>("relogin")
46
48
.AddService<UserLoginAutoCleanService>();
47
49
@@ -83,19 +85,21 @@ public static class XFEServerCoreBuilderExtensions
83
85
/// <summary>
84
86
/// 使用XFE标准服务器核心
85
87
/// </summary>
88
/// <typeparam name="T">登录返回用户接口类型</typeparam>
86
89
/// <param name="xFEServerCoreBuilder"></param>
87
90
/// <param name="getUserFunction"></param>
88
91
/// <param name="getEncryptedUserLoginModelFunction"></param>
89
92
/// <param name="addEncryptedUserLoginModelFunction"></param>
90
93
/// <param name="removeEncryptedUserLoginModelFunction"></param>
94
/// <param name="getLoginKeepDays"></param>
91
95
/// <param name="xFEDataTableManagerBuilder"></param>
92
96
/// <returns></returns>
93
public static XFEServerCoreBuilder UseXFEStandardServerCore(this XFEServerCoreBuilder xFEServerCoreBuilder, Func<IEnumerable<User>> getUserFunction, Func<IEnumerable<EncryptedUserLoginModel>> getEncryptedUserLoginModelFunction, Action<EncryptedUserLoginModel> addEncryptedUserLoginModelFunction, Action<EncryptedUserLoginModel> removeEncryptedUserLoginModelFunction, Func<int> getLoginKeepDays, XFEDataTableManagerBuilder xFEDataTableManagerBuilder) => xFEServerCoreBuilder.AddUserParameterBase(getUserFunction, getEncryptedUserLoginModelFunction, addEncryptedUserLoginModelFunction, removeEncryptedUserLoginModelFunction, getLoginKeepDays)
97
public static XFEServerCoreBuilder UseXFEStandardServerCore<T>(this XFEServerCoreBuilder xFEServerCoreBuilder, Func<IEnumerable<User>> getUserFunction, Func<IEnumerable<EncryptedUserLoginModel>> getEncryptedUserLoginModelFunction, Action<EncryptedUserLoginModel> addEncryptedUserLoginModelFunction, Action<EncryptedUserLoginModel> removeEncryptedUserLoginModelFunction, Func<int> getLoginKeepDays, XFEDataTableManagerBuilder xFEDataTableManagerBuilder) where T : IUserFaceInfo => xFEServerCoreBuilder.AddUserParameterBase(getUserFunction, getEncryptedUserLoginModelFunction, addEncryptedUserLoginModelFunction, removeEncryptedUserLoginModelFunction, getLoginKeepDays)
94
98
.AddDataTableManager(xFEDataTableManagerBuilder, getUserFunction, getEncryptedUserLoginModelFunction)
95
99
.AddEntryPotinVerify()
96
100
.AddDailyCounterService()
97
101
.AddXFEErrorProcessService()
98
102
.AddConnectService()
99
.AddStandardLoginService()
103
.AddStandardLoginService<T>()
100
104
.AddIpBannerService();
101
105
}
@@ -5,7 +5,7 @@
5
5
<ImplicitUsings>enable</ImplicitUsings>
6
6
<Nullable>enable</Nullable>
7
7
<GenerateDocumentationFile>True</GenerateDocumentationFile>
8
<Version>1.0.2</Version>
8
<Version>1.0.3</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
修复表格管理器服务接口传参问题
24
为服务器和客户端的用户登录服务添加泛型T,用以在登录时返回用户信息
25
25
26
26
## 新增
27
27