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
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
Curtir tópico
+ 0
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.
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]
[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
Clique aqui para fazer login e interagir na Comunidade :)