除超级管理员外,其他账户不允许同时在线

This commit is contained in:
dathlin
2017-07-07 14:08:33 +08:00
parent 0fa9cd986d
commit 826659de78
2 changed files with 38 additions and 4 deletions

View File

@@ -742,7 +742,7 @@ namespace 软件系统客户端模版
if (result.Content[0] == 'Y') if (result.Content[0] == 'Y')
{ {
byte[] data = Convert.FromBase64String(result.Content.Substring(1)); byte[] data = Convert.FromBase64String(result.Content.Substring(1));
string path32 = path + @"\" + PortraitSupport.SmallPortrait; string path32 = path + @"\" + PortraitSupport.LargePortrait;
System.IO.File.WriteAllBytes(path32, data); System.IO.File.WriteAllBytes(path32, data);
System.Diagnostics.Process.Start(path32); System.Diagnostics.Process.Start(path32);
} }

View File

@@ -495,8 +495,18 @@ namespace 软件系统服务端模版
//提取账户,密码 //提取账户,密码
string name = SoftBasic.GetValueFromJsonObject(json, UserAccount.UserNameText, ""); string name = SoftBasic.GetValueFromJsonObject(json, UserAccount.UserNameText, "");
string password = SoftBasic.GetValueFromJsonObject(json, UserAccount.PasswordText, ""); string password = SoftBasic.GetValueFromJsonObject(json, UserAccount.PasswordText, "");
net_simplify_server.SendMessage(state, customer, UserServer.ServerAccounts.CheckAccountJson(
name, password, state.GetRemoteEndPoint().Address.ToString())); UserAccount account = UserServer.ServerAccounts.CheckAccount(name, password, state.GetRemoteEndPoint().Address.ToString());
//检测是否重复登录
if(account.LoginEnable)
{
if(IsClinetOnline(account.UserName))
{
account.LoginEnable = false;
account.ForbidMessage = "该账户已经登录";
}
}
net_simplify_server.SendMessage(state, customer, JObject.FromObject(account).ToString());
} }
else if (customer == CommonHeadCode.SimplifyHeadCode.) else if (customer == CommonHeadCode.SimplifyHeadCode.)
{ {
@@ -849,7 +859,7 @@ namespace 软件系统服务端模版
{ {
//此处决定要不要将在线客户端的数据发送所有客户端 //此处决定要不要将在线客户端的数据发送所有客户端
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.线, data); net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.线, data);
Net_Socket_All_Clients = data;
if (IsWindowShow && IsHandleCreated) if (IsWindowShow && IsHandleCreated)
{ {
BeginInvoke(new Action(() => BeginInvoke(new Action(() =>
@@ -860,6 +870,30 @@ namespace 软件系统服务端模版
} }
} }
/// <summary>
/// 所有在线客户端的信息
/// </summary>
private string Net_Socket_All_Clients = string.Empty;
/// <summary>
/// 用来判断客户端是否已经在线,除了超级管理员,其他的账户不允许重复在线,重复登录的账户予以特殊标记
/// </summary>
/// <returns>该客户端是否在线</returns>
private bool IsClinetOnline(string userName)
{
if (userName == "admin") return false;
if(Net_Socket_All_Clients.Contains($"Name:{userName}#"))
{
return true;
}
else if(Net_Socket_All_Clients.EndsWith($"Name:{userName}"))
{
return true;
}
else
{
return false;
}
}
#endregion #endregion