dúvidas com Session

19/05/2009

0

Bom dia galera...
então, to com um problema com session em um sisteminha de suporte on-line que to desenvolvendo.
Vou explicar o problema: o usuário digita seu nome de usuário, então é criado um objeto onde atribuidos os dados do usuario como o nome, o id, e se o usuario logado é administrador, então eu passo esse objeto para uma Session (´Session[´User´]´). Até aqui tudo bem, o problema, é que se eu logar com outro usuário, ele sobrescreve os dados do usuário que logou antes, ai que está meu problema, a Session não deveria ser unica por cliente???? Vou mostrar o código para voces analizarem.

protected void btnLogin_Click(object sender, EventArgs e)
{
classes.Login login = new classes.Login();
login.executeLogin(((TextBox)frmLogin.FindControl(´txtUserName´)).Text);

//Retorna o id e o nome do último usuário logado
DataTable lastLogin = login.returnLastLogin();

//atribui os dados do ultimo logado para as propriedades
login.IdUser = (int)lastLogin.Rows[0][´idUser´];
login.NmUser = lastLogin.Rows[0][´nmUser´].ToString();
login.IsAdm = (bool)lastLogin.Rows[0][´isAdm´];

Session[´User´] = login;

Response.Redirect(´chat-room.aspx´);
}

esse código acima é da tela de login, agora vou mostrar como eu recupero os dados na hora do chat.

protected void btnSend_Click(object sender, EventArgs e)
{
classes.Login log = (classes.Login)Session[´User´];

Messages message = new Messages();
message.IdAdm = log.IdAdm;
message.IdUser = log.IdUser;
message.NmUser = log.NmUser;
string text = string.Format(´ diz: ´, DateTime.Now.ToString(´dd/MM hh:mm:ss´), message.NmUser, ((TextBox)frmChatRoom.FindControl(´txtMessage´)).Text);
message.DsMessage = text;

if (Application[´messages´] != null)
{
ArrayList arrayMessages = (ArrayList)Application[´messages´];
arrayMessages.Add(message);
Application[´messages´] = arrayMessages;
}
else
{
ArrayList arrayMessages = new ArrayList();
arrayMessages.Add(message);
Application[´messages´] = arrayMessages;
}

showMessage();
}


Não sei se do modo que estou fazendo está errado, mas eu não encontrei outra forma que pudesse sanar minha dúvida.

Espero resposta, valeu


Willbnu

Willbnu

Responder

Posts

25/05/2009

Tiagodb

As variáveis de session são iguais para um mesmo cliente.
O que você pode fazer é armazenar na variável de session uma lista de clientes (array) e somente alternar entre o user logado.


Responder

17/08/2009

Cesarch

Da uma olhada aqui, pode ajudar:
[url]http://www.mundoasp.net/login-asp-dot-net/[/url]
[url]http://www.mundoasp.net/session-asp-dot-net/[/url]
[url]http://www.mundoasp.net/array-c-sharp-array-vetor-array-matriz/[/url]


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar