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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar