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

View File

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Principal;
using System.Threading;
using Aitex.Common.Util;
using Aitex.Core.Account;
@ -18,7 +19,9 @@ namespace MECF.Framework.Common.Account
{
#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 _scAccountLocalFile = PathManager.GetCfgDir() + "Account//_Account.xml";
@ -88,19 +91,23 @@ namespace MECF.Framework.Common.Account
if (roleId == role)
{
loginResult.ActSucc = true;
loginResult.AccountInfo = account;
loginResult.Description = AuthorizeResult.None.ToString();
foreach (var loginUser in _loginUserList)
foreach (var kvp in _dicLoginNameToLoginResult)
{
var loggedIn = kvp.Value;
if (!SC.ContainsItem("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;
_loginUserList[loginName] = account;
_dicLoginNameToAccountInfo[loginName] = account;
_dicSessionIdToAccountInfo[account.SessionId] = account;
return loginResult;
}
@ -124,11 +131,12 @@ namespace MECF.Framework.Common.Account
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;
}
}

View File

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

View File

@ -8,42 +8,16 @@ namespace MECF.Framework.Common.Account.Extends
{
private string _loginName;
private string _rolename;
public string Address { get; set; }
public string HostName { get; set; }
public string LoginName
{
get
{
return _loginName;
}
get => _loginName;
set
{
_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 DateTime LoginTime { get; set; }
@ -52,6 +26,8 @@ namespace MECF.Framework.Common.Account.Extends
public int Token { get; set; }
public string SessionId { get; set; }
public string Language { get; private 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.DialogResult = UserMode.None;
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;
}