From 6957751858657f0d0b2ef9eec8fa3dcd503540e6 Mon Sep 17 00:00:00 2001
From: SL <123@123.com>
Date: Mon, 18 Sep 2023 10:13:40 +0800
Subject: [PATCH] =?UTF-8?q?[Common]=20=E7=99=BB=E5=BD=95=E7=9B=B8=E5=85=B3?=
=?UTF-8?q?=E6=96=B9=E6=B3=95=E7=9A=84=E5=8F=82=E6=95=B0=E6=94=B9=E4=B8=BA?=
=?UTF-8?q?=E4=BD=BF=E7=94=A8token=EF=BC=8C=E8=80=8C=E4=B8=8D=E6=98=AFCred?=
=?UTF-8?q?ential=E3=80=82=20=E6=96=B0=E5=A2=9EReadOnlyRole=E8=A7=92?=
=?UTF-8?q?=E8=89=B2=EF=BC=8C=E7=94=A8=E4=BA=8E=E8=B4=A6=E5=8F=B7=E8=A2=AB?=
=?UTF-8?q?=E9=A1=B6=E5=87=BA=E5=90=8E=E8=87=AA=E5=8A=A8=E5=B0=86=E7=95=8C?=
=?UTF-8?q?=E9=9D=A2=E8=AE=BE=E7=BD=AE=E4=B8=BA=E5=8F=AA=E8=AF=BB=E6=A8=A1?=
=?UTF-8?q?=E5=BC=8F=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Aitex/Core/Account/AccountService.cs | 16 +++++-----
.../Aitex/Core/Account/CredentialManager.cs | 6 ++--
.../Aitex/Core/Account/IAccountService.cs | 21 ++++++--------
.../MECF.Framework.Common.csproj | 1 +
.../Common/Account/AccountExManager.cs | 18 ++++++------
.../Common/Account/Extends/ReadOnlyRole.cs | 25 ++++++++++++++++
.../Framework/Common/Account/Extends/Role.cs | 6 ++--
.../UI/Core/Accounts/AccountServiceClient.cs | 16 +++++-----
UIDebug/UserLoginTester/Program.cs | 29 +++++++++++++++----
9 files changed, 89 insertions(+), 49 deletions(-)
create mode 100644 MECF.Framework.Common/MECF/Framework/Common/Account/Extends/ReadOnlyRole.cs
diff --git a/MECF.Framework.Common/Aitex/Core/Account/AccountService.cs b/MECF.Framework.Common/Aitex/Core/Account/AccountService.cs
index d595a17..8d16e1c 100644
--- a/MECF.Framework.Common/Aitex/Core/Account/AccountService.cs
+++ b/MECF.Framework.Common/Aitex/Core/Account/AccountService.cs
@@ -230,20 +230,20 @@ namespace Aitex.Core.Account
AccountExManager.Instance.CancelLoginRequest(userName);
}
- public void ConfirmLoginRequest(Credential requestingCred)
+ public void ConfirmLoginRequest(string userName)
{
- AccountExManager.Instance.ConfirmedLoginRequest(requestingCred);
+ AccountExManager.Instance.ConfirmedLoginRequest(userName);
}
- public void RejectLoginRequest(Credential requestingCred)
+ public void RejectLoginRequest(string userName)
{
- AccountExManager.Instance.RejectLoginRequest(requestingCred);
+ AccountExManager.Instance.RejectLoginRequest(userName);
}
- public void LogoutEx(Credential cred)
+ public void LogoutEx(Guid myToken)
{
- AccountExManager.Instance.Logout(cred);
+ AccountExManager.Instance.Logout(myToken);
}
///
@@ -251,9 +251,9 @@ namespace Aitex.Core.Account
///
/// 客户端登录凭据令牌。
///
- public CredentialKeepAliveResults KeepAlive(Credential cred)
+ public CredentialKeepAliveResults KeepAlive(Guid myToken)
{
- return CredentialManager.Instance.KeepAlive(cred);
+ return CredentialManager.Instance.KeepAlive(myToken);
}
}
}
diff --git a/MECF.Framework.Common/Aitex/Core/Account/CredentialManager.cs b/MECF.Framework.Common/Aitex/Core/Account/CredentialManager.cs
index ac24840..757aa0a 100644
--- a/MECF.Framework.Common/Aitex/Core/Account/CredentialManager.cs
+++ b/MECF.Framework.Common/Aitex/Core/Account/CredentialManager.cs
@@ -199,17 +199,17 @@ public class CredentialManager : Singleton
///
/// 客户端登录凭据
///
- public CredentialKeepAliveResults KeepAlive(Credential cred)
+ public CredentialKeepAliveResults KeepAlive(Guid myToken)
{
lock (_syncRoot)
{
- if (_dictCredentialsLoggedIn.TryGetValue(cred.Token, out var loginCred))
+ if (_dictCredentialsLoggedIn.TryGetValue(myToken, out var loginCred))
{
loginCred.LastAliveTime = DateTime.Now; // 刷新时间
// 如果当前用户名在请求登录列表中,则返回CredentialKeepAliveResults.RequestingLogin,通知
// 已登录的客户端,当前用户正在请求异地登录。
- return _dictCredentialsRequesting.ContainsKey(cred.AccountInfo.LoginName)
+ return _dictCredentialsRequesting.ContainsKey(loginCred.AccountInfo.LoginName)
? CredentialKeepAliveResults.RequestingLogin
: CredentialKeepAliveResults.Alive;
}
diff --git a/MECF.Framework.Common/Aitex/Core/Account/IAccountService.cs b/MECF.Framework.Common/Aitex/Core/Account/IAccountService.cs
index f934ecb..370568d 100644
--- a/MECF.Framework.Common/Aitex/Core/Account/IAccountService.cs
+++ b/MECF.Framework.Common/Aitex/Core/Account/IAccountService.cs
@@ -1,3 +1,4 @@
+using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.Threading.Tasks;
@@ -57,7 +58,6 @@ namespace Aitex.Core.Account
#endregion
-
#region Permission Operations
@@ -87,7 +87,6 @@ namespace Aitex.Core.Account
#endregion
-
#region Role Operations
///
@@ -137,7 +136,6 @@ namespace Aitex.Core.Account
#endregion
-
#region Account Operations
///
@@ -253,9 +251,9 @@ namespace Aitex.Core.Account
///
/// ע¼
///
- /// ƾ
+ /// ǰ¼
[OperationContract]
- void LogoutEx(Credential cred);
+ void LogoutEx(Guid myToken);
///
/// ȡ¼
@@ -267,25 +265,24 @@ namespace Aitex.Core.Account
///
/// ȷص¼
///
- ///
+ /// ¼
[OperationContract]
- void ConfirmLoginRequest(Credential requestingCred);
+ void ConfirmLoginRequest(string userName);
///
/// ܾص¼
///
- ///
+ /// ¼
[OperationContract]
- void RejectLoginRequest(Credential requestingCred);
-
+ void RejectLoginRequest(string userName);
///
/// ƾݡ
///
- /// ƾ
+ /// ǰ¼
///
[OperationContract]
- CredentialKeepAliveResults KeepAlive(Credential cred);
+ CredentialKeepAliveResults KeepAlive(Guid myToken);
#endregion
}
diff --git a/MECF.Framework.Common/MECF.Framework.Common.csproj b/MECF.Framework.Common/MECF.Framework.Common.csproj
index a0cf793..b5db731 100644
--- a/MECF.Framework.Common/MECF.Framework.Common.csproj
+++ b/MECF.Framework.Common/MECF.Framework.Common.csproj
@@ -577,6 +577,7 @@
+
diff --git a/MECF.Framework.Common/MECF/Framework/Common/Account/AccountExManager.cs b/MECF.Framework.Common/MECF/Framework/Common/Account/AccountExManager.cs
index 7311fa0..18c678b 100644
--- a/MECF.Framework.Common/MECF/Framework/Common/Account/AccountExManager.cs
+++ b/MECF.Framework.Common/MECF/Framework/Common/Account/AccountExManager.cs
@@ -285,10 +285,10 @@ namespace MECF.Framework.Common.Account
///
/// 确认登录请求。
///
- ///
- internal void ConfirmedLoginRequest(Credential requestingCred)
+ ///
+ internal void ConfirmedLoginRequest(string userName)
{
- var cred = CredentialManager.Instance.GetRequestingCredential(requestingCred.AccountInfo.LoginName);
+ var cred = CredentialManager.Instance.GetRequestingCredential(userName);
if (cred != null)
cred.State = CredentialState.Confirmed;
}
@@ -296,24 +296,24 @@ namespace MECF.Framework.Common.Account
///
/// 拒绝登录请求。
///
- ///
- internal void RejectLoginRequest(Credential requestingCred)
+ ///
+ internal void RejectLoginRequest(string userName)
{
- var cred = CredentialManager.Instance.GetRequestingCredential(requestingCred.AccountInfo.LoginName);
+ var cred = CredentialManager.Instance.GetRequestingCredential(userName);
if (cred != null)
cred.State = CredentialState.Reject;
}
- internal void Logout(Credential cred)
+ internal void Logout(Guid myToken)
{
- var loginCred = CredentialManager.Instance.GetCredential(cred.Token);
+ var loginCred = CredentialManager.Instance.GetCredential(myToken);
if (loginCred != null)
{
EV.PostMessage(ModuleName.System.ToString(), EventEnum.UserLoggedOff,
$"{loginCred.AccountInfo.LoginName}@{loginCred.LoginIP}:{loginCred.LoginPort}");
}
- CredentialManager.Instance.Remove(cred.Token);
+ CredentialManager.Instance.Remove(myToken);
}
#endregion
diff --git a/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/ReadOnlyRole.cs b/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/ReadOnlyRole.cs
new file mode 100644
index 0000000..7a47a52
--- /dev/null
+++ b/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/ReadOnlyRole.cs
@@ -0,0 +1,25 @@
+using MECF.Framework.Common.Account;
+using MECF.Framework.Common.Account.Extends;
+
+namespace MECF.Framework.Common.MECF.Framework.Common.Account.Extends
+{
+ ///
+ /// 只读权限的角色。
+ ///
+ public class ReadOnlyRole : Role
+ {
+ #region Constructors
+
+ public ReadOnlyRole() : base("-1", "ReadOnly", false, 0, null, true, "")
+ {
+
+ }
+
+ #endregion
+
+ public override MenuPermissionEnum GetPermission(string name)
+ {
+ return MenuPermissionEnum.MP_NONE;
+ }
+ }
+}
diff --git a/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/Role.cs b/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/Role.cs
index a8d45ea..a76d5ea 100644
--- a/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/Role.cs
+++ b/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/Role.cs
@@ -19,9 +19,9 @@ namespace MECF.Framework.Common.Account.Extends
private string _permissionContent;
private string _description;
- #endregion
+ #endregion
- #region Constructors
+ #region Constructors
///
/// 构造角色的对象实例。
@@ -146,7 +146,7 @@ namespace MECF.Framework.Common.Account.Extends
///
///
///
- public MenuPermissionEnum GetPermission(string name)
+ public virtual MenuPermissionEnum GetPermission(string name)
{
if (PermissionControlItems.TryGetValue(name, out var permissionEnum))
return permissionEnum;
diff --git a/MECF.Framework.Common/MECF/Framework/UI/Core/Accounts/AccountServiceClient.cs b/MECF.Framework.Common/MECF/Framework/UI/Core/Accounts/AccountServiceClient.cs
index cc6e4cf..939bc03 100644
--- a/MECF.Framework.Common/MECF/Framework/UI/Core/Accounts/AccountServiceClient.cs
+++ b/MECF.Framework.Common/MECF/Framework/UI/Core/Accounts/AccountServiceClient.cs
@@ -290,36 +290,36 @@ namespace MECF.Framework.UI.Core.Accounts
});
}
- public void ConfirmLoginRequest(Credential requestingCred)
+ public void ConfirmLoginRequest(string userName)
{
WCFProxy.Using(delegate(IAccountService svc)
{
- svc.ConfirmLoginRequest(requestingCred);
+ svc.ConfirmLoginRequest(userName);
});
}
- public void RejectLoginRequest(Credential requestingCred)
+ public void RejectLoginRequest(string userName)
{
WCFProxy.Using(delegate(IAccountService svc)
{
- svc.RejectLoginRequest(requestingCred);
+ svc.RejectLoginRequest(userName);
});
}
- public void LogoutEx(Credential cred)
+ public void LogoutEx(Guid myToken)
{
WCFProxy.Using(delegate(IAccountService svc)
{
- svc.LogoutEx(cred);
+ svc.LogoutEx(myToken);
});
}
- public CredentialKeepAliveResults KeepAlive(Credential cred)
+ public CredentialKeepAliveResults KeepAlive(Guid myToken)
{
var result = CredentialKeepAliveResults.NotFound;
WCFProxy.Using(delegate(IAccountService svc)
{
- result = svc.KeepAlive(cred);
+ result = svc.KeepAlive(myToken);
});
return result;
}
diff --git a/UIDebug/UserLoginTester/Program.cs b/UIDebug/UserLoginTester/Program.cs
index 06d2569..d4b1276 100644
--- a/UIDebug/UserLoginTester/Program.cs
+++ b/UIDebug/UserLoginTester/Program.cs
@@ -22,11 +22,27 @@ namespace UserLoginTester
Console.WriteLine(@"Accounts:");
foreach (var acc in accounts)
{
- Console.WriteLine($@" {acc.LoginName}");
+ Console.WriteLine($@" {acc.LoginName}");
}
Console.ResetColor();
- while (true)
+ var ret = await AccountClient.Instance.Service.LoginEx("admin", "admin", "0", new LoginClientInfo());
+ if (ret.Result == LoginRequestResults.Confirmed)
+ {
+ Console.WriteLine("Login Succeeded!");
+ }
+ else
+ {
+ Console.WriteLine($"Login Failed, {ret.Result}");
+ }
+
+ Console.WriteLine("Press ENTER to exit...");
+ Console.ReadLine();
+ AccountClient.Instance.Service.LogoutEx(ret.Credential.Token);
+
+
+ /*
+ while (true)
{
var cmd = WaitCommand();
if(string.IsNullOrEmpty(cmd))
@@ -37,6 +53,7 @@ namespace UserLoginTester
ParseCommand(cmd);
}
+ */
}
private static string WaitCommand()
@@ -88,7 +105,7 @@ namespace UserLoginTester
private static void LogoutProcess()
{
- AccountClient.Instance.Service.LogoutEx(_loginCred);
+ AccountClient.Instance.Service.LogoutEx(_loginCred.Token);
}
private static void Instance_OnDisconnectedWithRT()
@@ -121,11 +138,11 @@ namespace UserLoginTester
switch (ack)
{
case "Y":
- AccountClient.Instance.Service.ConfirmLoginRequest(requestingCred);
- AccountClient.Instance.Service.LogoutEx(_loginCred);
+ AccountClient.Instance.Service.ConfirmLoginRequest(requestingCred.AccountInfo.LoginName);
+ AccountClient.Instance.Service.LogoutEx(_loginCred.Token);
break;
case "N":
- AccountClient.Instance.Service.RejectLoginRequest(requestingCred);
+ AccountClient.Instance.Service.RejectLoginRequest(requestingCred.AccountInfo.LoginName);
break;
default:
goto __prompt;