dúvidas com Session
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
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
Curtidas 0
Respostas
Tiagodb
19/05/2009
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.
O que você pode fazer é armazenar na variável de session uma lista de clientes (array) e somente alternar entre o user logado.
GOSTEI 0
Cesarch
19/05/2009
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]
[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]
GOSTEI 0