C# Asp.Net web窗体登录模式-保留已登录用户的列表

C# Asp.Net web窗体登录模式-保留已登录用户的列表,c#,asp.net,login,request,C#,Asp.net,Login,Request,我是一个开发整个系统的初学者,所以,这里需要一些方法指导。希望你能帮助我!=) 在尝试创建一个登录模式时,我有一个控制类,它保存一个登录用户列表 public static class ControleAcesso { private static List<Associado> associadosLogados = new List<Associado>(); public static Mensagens doLogin(Page pagina, S

我是一个开发整个系统的初学者,所以,这里需要一些方法指导。希望你能帮助我!=)

在尝试创建一个登录模式时,我有一个控制类,它保存一个登录用户列表

public static class ControleAcesso
{
    private static List<Associado> associadosLogados = new List<Associado>();
    public static Mensagens doLogin(Page pagina, String login, String senha)
    {
        Mensagens retorno = new Mensagens();
        retorno = AcessoDAL.Login(login, senha);

        if (retorno.Erros.Count() <= 0 && retorno.Objeto != null)
        {
            Associado assocLogado = new Associado();
            Associados assocEncontrado = (Associados)retorno.Objeto;

            assocLogado.ID = assocEncontrado.Associado;
            assocLogado.Nome = assocEncontrado.Nome;
            assocLogado.Nome_Fantasia = assocEncontrado.Nome_Fantasia;
            assocLogado.Data_Inclusao = assocEncontrado.Data_Inclusao;
            assocLogado.Email = assocEncontrado.Email;
            assocLogado.Data_Alteracao = assocEncontrado.Data_Alteracao;
            assocLogado.Login = assocEncontrado.Login;
            assocLogado.Senha = assocEncontrado.Senha;
            assocLogado.CGC_CPF = assocEncontrado.CGC_CPF;
            assocLogado.SessionID = pagina.Session.SessionID;

            var associadoJaLogado = associadosLogados.Where(x => x.ID == assocLogado.ID).FirstOrDefault();

            if (associadoJaLogado != null)
            {
                pagina.Session.Remove(associadoJaLogado.SessionID);
                associadosLogados.Remove(associadoJaLogado);
            }                
            associadosLogados.Add(assocLogado);
        }
        return retorno;
    }
}
公共静态类控件
{
私有静态列表associadologados=new List();
publicstaticmensagensdologin(Page pagina,stringlogin,stringsenha)
{
Mensagens returno=新的Mensagens();
returno=AcessoDAL.Login(Login,senha);
if(returno.Erros.Count()x.ID==assocLogado.ID).FirstOrDefault();
if(associadoJaLogado!=null)
{
pagina.Session.Remove(associadoJaLogado.SessionID);
移除(associadoJaLogado);
}                
添加(assocLogado);
}
返回号;
}
}
因此,这个方法基本上是对数据访问层类进行登录调用。如果登录返回一个用户,我会将该用户添加到我的列表中

因此,为了以后了解我的登录用户并检索关于使用会话ID的数据,我在列表中进行了一些管理。只是基本的。删除已登录的文件并添加新文件

正如您可能注意到的,问题在于,当我在“同一时间”有两个对相同凭据的请求时,它将允许用户登录两次

那么,这是登录方案的最佳实践吗?你们能建议我做些改变吗

我将ASP.NET Web表单与C#一起使用。
感谢您的建议。

除非您明确要求用户一次只能使用一台设备,否则您不必担心他们可能会登录。因此,这是一个问题,当且仅当它可能违反您的一个条款时。

谢谢您的回答。事实上,现在想想,我认为这不是一个大问题。你看到另一个问题了吗?或者可能会为登录模式提出另一种方法?我看到的唯一可能的问题是其他人可能使用相同的凭据登录。你可以通过确保你的系统保护你的用户的身份来防止这种情况。实际上,我正在处理另一个问题,由这种方法引起的。当用户打开浏览器时,发送的SessionID为“exampleSessionID”。然后,他登录,我将这个sessionID和他的登录详细信息保存在用户列表中。好啊然后,他在浏览器中打开另一个选项卡,再次登录。sessionID仍然是相同的“exampleSessionID”,因此,系统将与新用户添加相同的会话,并且在将来的请求中,我将无法确定是谁请求。我不知道如何处理SessionID来链接我的用户,一旦他登录。谢谢你的建议。