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;