This commit is contained in:
SL 2023-08-29 11:16:43 +08:00
parent 1fc742f477
commit 77ec57f97e
5 changed files with 32 additions and 52 deletions

View File

@ -1,4 +1,5 @@
using System; using System;
using MECF.Framework.Common.Account.Extends;
namespace Aitex.Core.Account namespace Aitex.Core.Account
{ {
@ -6,30 +7,30 @@ namespace Aitex.Core.Account
public class LoginResult public class LoginResult
{ {
/// <summary> /// <summary>
/// 设置或返回是否登录成功。 /// 设置或返回是否登录成功。
/// </summary> /// </summary>
public bool ActSucc { get; set; } public bool ActSucc { get; set; }
/// <summary> /// <summary>
/// 设置或返回登录成功后RT分配的唯一识别码。 /// 设置或返回登录成功后RT分配的唯一识别码。
/// <remarks> /// <remarks>
/// 该唯一识别码用于在RT区分每一个不同的客户端连接。 /// 该唯一识别码用于在RT区分每一个不同的客户端连接。
/// </remarks> /// </remarks>
/// </summary> /// </summary>
public string SessionId { get; set; } public string SessionId { get; set; }
/// <summary> /// <summary>
/// 设置或返回登录的账户信息。 /// 设置或返回登录的账户信息。
/// </summary> /// </summary>
public Account AccountInfo { get; set; } public AccountEx AccountInfo { get; set; }
/// <summary> /// <summary>
/// 设置或返回登录结果描述。 /// 设置或返回登录结果描述。
/// </summary> /// </summary>
public string Description { get; set; } public string Description { get; set; }
/// <summary> /// <summary>
/// 设置或返回登录时间。 /// 设置或返回登录时间。
/// </summary> /// </summary>
public DateTime LoginTime { get; set; } public DateTime LoginTime { get; set; }
} }

View File

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Security.Principal;
using System.Threading; using System.Threading;
using Aitex.Common.Util; using Aitex.Common.Util;
using Aitex.Core.Account; using Aitex.Core.Account;
@ -18,7 +19,9 @@ namespace MECF.Framework.Common.Account
{ {
#region Variables #region Variables
private readonly Dictionary<string, AccountEx> _loginUserList = new (); private readonly Dictionary<string, LoginResult> _dicLoginNameToLoginResult = new ();
private readonly Dictionary<string, LoginResult> _dicSessionIdToLoginResult = new ();
private readonly string _scAccountFile = PathManager.GetCfgDir() + "Account//Account.xml"; private readonly string _scAccountFile = PathManager.GetCfgDir() + "Account//Account.xml";
private readonly string _scAccountLocalFile = PathManager.GetCfgDir() + "Account//_Account.xml"; private readonly string _scAccountLocalFile = PathManager.GetCfgDir() + "Account//_Account.xml";
@ -88,19 +91,23 @@ namespace MECF.Framework.Common.Account
if (roleId == role) if (roleId == role)
{ {
loginResult.ActSucc = true; loginResult.ActSucc = true;
loginResult.AccountInfo = account;
loginResult.Description = AuthorizeResult.None.ToString(); loginResult.Description = AuthorizeResult.None.ToString();
foreach (var loginUser in _loginUserList) foreach (var kvp in _dicLoginNameToLoginResult)
{ {
var loggedIn = kvp.Value;
if (!SC.ContainsItem("System.AllowMultiClientLogin") || if (!SC.ContainsItem("System.AllowMultiClientLogin") ||
!SC.GetValue<bool>("System.AllowMultiClientLogin") || !SC.GetValue<bool>("System.AllowMultiClientLogin") ||
loginUser.Value.LoginName == loginName) loggedIn.AccountInfo.LoginName == loginName)
{ {
EV.PostKickoutMessage(loginUser.Value.SessionId); EV.PostKickoutMessage(loggedIn.SessionId);
} }
} }
account.SessionId = loginResult.SessionId; account.SessionId = loginResult.SessionId;
_loginUserList[loginName] = account; _dicLoginNameToAccountInfo[loginName] = account;
_dicSessionIdToAccountInfo[account.SessionId] = account;
return loginResult; return loginResult;
} }
@ -124,11 +131,12 @@ namespace MECF.Framework.Common.Account
internal void Logout(string accountId, string loginId) internal void Logout(string accountId, string loginId)
{ {
foreach (string key in _loginUserList.Keys) foreach (string key in _dicLoginNameToAccountInfo.Keys)
{ {
if (accountId == key && _loginUserList[key].SessionId == loginId) if (accountId == key && _dicLoginNameToAccountInfo[key].SessionId == loginId)
{ {
_loginUserList.Remove(key); _dicSessionIdToAccountInfo.Remove(accou)
_dicLoginNameToAccountInfo.Remove(key);
break; break;
} }
} }

View File

@ -102,12 +102,7 @@ namespace MECF.Framework.Common.Account.Extends
get => _mStrPassword; get => _mStrPassword;
set => _mStrPassword = value; set => _mStrPassword = value;
} }
/// <summary>
/// 设置或返回当前用户登录的Session ID。
/// </summary>
public string SessionId { get; set; }
/// <summary> /// <summary>
/// 设置或返回当前用户是否为超级用户。 /// 设置或返回当前用户是否为超级用户。
/// </summary> /// </summary>

View File

@ -7,43 +7,17 @@ namespace MECF.Framework.Common.Account.Extends
public class UserContext : NotifiableItem public class UserContext : NotifiableItem
{ {
private string _loginName; private string _loginName;
private string _rolename;
public string Address { get; set; }
public string HostName { get; set; }
public string LoginName public string LoginName
{ {
get get => _loginName;
{
return _loginName;
}
set set
{ {
_loginName = value; _loginName = value;
InvokePropertyChanged("LoginName"); InvokePropertyChanged();
} }
} }
public string RoleName
{
get
{
return _rolename;
}
set
{
_rolename = value;
InvokePropertyChanged("RoleName");
}
}
public string RoleID { get; set; }
public string LoginId { get; set; }
public Role Role { get; set; } public Role Role { get; set; }
public DateTime LoginTime { get; set; } public DateTime LoginTime { get; set; }
@ -52,6 +26,8 @@ namespace MECF.Framework.Common.Account.Extends
public int Token { get; set; } public int Token { get; set; }
public string SessionId { get; set; }
public string Language { get; private set; } public string Language { get; private set; }
public bool IsLogin { get; set; } public bool IsLogin { get; set; }

View File

@ -12,7 +12,7 @@ namespace MECF.Framework.UI.Client.CenterViews.LogOnOff
this.DisplayName = (string)Application.Current.Resources["AppName"]; this.DisplayName = (string)Application.Current.Resources["AppName"];
this.DialogResult = UserMode.None; this.DialogResult = UserMode.None;
this.LoginName = BaseApp.Instance.UserContext.LoginName; this.LoginName = BaseApp.Instance.UserContext.LoginName;
this.RoleName = BaseApp.Instance.UserContext.RoleName; this.RoleName = BaseApp.Instance.UserContext.Role.RoleName;
this.LoginTime = BaseApp.Instance.UserContext.LoginTime; this.LoginTime = BaseApp.Instance.UserContext.LoginTime;
} }