TimeOut - Login
Prezados;
Não estou conseguindo determinar o tempo certo em que o usuário deva ficar logado no meu sistema. Na primeira vez que o usuáro se loga ele é jogado para fora do sistema e obrigado a digitar novamente o usuário e senha.
Na minha aplicação possuo duas conexões: uma criei na mão, utilizo para fazer o login, e outra pelo Wizard que utilizo com DataSet tipado, para minhas instruções CRUD.
Abaixo segue o código da minha página de login:
------------------------------------------------------------------------------------------------------------------------
<%@ Page Language="VB" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<%@ import Namespace="System.Web.Security" %> <script runat="server">
'*******************************************************
'
' Login.aspx: Loga todos os usuários
'
'*******************************************************
'*******************************************************
' Quando os usuários clicam em enviar, verifica se eles são
' usuários válidos. Se forem, loga ao sistema, e seta um cookie
' com seu nome de usuário, e redireciona para cobranca.aspx.
' Caso contrário exibe uma mensagem de erro.
'******************************************************* Function ValidaUsuario(nome As string, senha As string) As Boolean Dim strSQL As String = "Select * from tbUsuario Where nome=@nome AND senha=@senha AND Cancelado='N'"
Dim MyConn As New OleDbConnection(ConfigurationSettings.AppSettings("strConn"))
Dim objDR As OleDbDataReader
Dim Cmd As New OleDbCommand(strSQL, MyConn)
Cmd.Parameters.Add(New OleDbParameter("@nome", nome))
Cmd.Parameters.Add(New OleDbParameter("@senha", senha))
Try MyConn.Open()
objDR = Cmd.ExecuteReader(CommandBehavior.CloseConnection)
If objDR.Read() Then
Session.Clear()
Session("Permissao") = objDR!Permissao
Session("Nome") = objDR!Nome
Session("CodSede") = objDR!CodSede
FormsAuthentication.RedirectFromLoginPage(objDR("Nome"), False)
Else
saida.Visible = "True"
saida.Text = "Usuário/Senha inválido(s), tente novamente."
End If
Catch ex As Exception
saida.Visible = "true"
'Retirei a informação do código do Erro
'saida.Text = "Ocorreu um erro durante o Login : " & "<p>" & ex.Message()
'saida.Text = "Ocorreu um erro durante o Login, tente novamente mais tarde..."
'Caso ocorra algum erro de acesso ao Banco irei exibir
Response.Redirect("manutencao.aspx")
Finally
MyConn.Close()
End Try
End Function
Sub Login(ByVal Source As Object, ByVal E As EventArgs)
ValidaUsuario(nome.Text, senha.Text)
nome.Text = ""
senha.Text = ""
End Sub 'Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
' ValidaUsuario(Session("Usuario"), Session("Password"))
'End Sub
</script>
<html>
<head>
<title>Sistema Total</title>
<link href="StyleSheet.css" rel="stylesheet" type="text/css" />
</head>
<body style="font-family: Verdana; font-size: 11px; color: #333333; background-color: #BACFF1;">
<form id="frmLogin" runat="server" target="_parent">
Acesso Restrito:
<table runat="server" id="tbLogin" cellpadding="0" cellspacing="0">
<tr runat="server">
<td>
<span style="font-size:11px">Usuário:</span>
<br />
<asp:TextBox id="nome" runat="server" Width="90px"
CssClass="txtusuario" />
</td>
</tr>
<tr runat="server">
<td>
<span style="font-size:11px">Senha:</span>
<br />
<asp:TextBox id="senha" TextMode="password" runat="server" Width="90px"
CssClass="txtusuario" />
</td>
</tr>
</table>
<asp:Button id="Button1" runat="server" onClick="Login" text="Enviar"
CssClass="btenvialogin" />
<br />
<asp:Label id="saida" runat="server" forecolor="Red" />
</form>
</body>
</html> ------------------------------------------------------------------------------------------------------------------------ Agora onde determino o TimeOut no meu WebConfig: ------------------------------------------------------------------------------------------------------------------------ <authentication mode="Forms" >
<forms name="frmLogim" loginUrl="login.aspx" timeout="300" path ="/" />
</authentication> ------------------------------------------------------------------------------------------------------------------------
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<%@ import Namespace="System.Web.Security" %> <script runat="server">
'*******************************************************
'
' Login.aspx: Loga todos os usuários
'
'*******************************************************
'*******************************************************
' Quando os usuários clicam em enviar, verifica se eles são
' usuários válidos. Se forem, loga ao sistema, e seta um cookie
' com seu nome de usuário, e redireciona para cobranca.aspx.
' Caso contrário exibe uma mensagem de erro.
'******************************************************* Function ValidaUsuario(nome As string, senha As string) As Boolean Dim strSQL As String = "Select * from tbUsuario Where nome=@nome AND senha=@senha AND Cancelado='N'"
Dim MyConn As New OleDbConnection(ConfigurationSettings.AppSettings("strConn"))
Dim objDR As OleDbDataReader
Dim Cmd As New OleDbCommand(strSQL, MyConn)
Cmd.Parameters.Add(New OleDbParameter("@nome", nome))
Cmd.Parameters.Add(New OleDbParameter("@senha", senha))
Try MyConn.Open()
objDR = Cmd.ExecuteReader(CommandBehavior.CloseConnection)
If objDR.Read() Then
Session.Clear()
Session("Permissao") = objDR!Permissao
Session("Nome") = objDR!Nome
Session("CodSede") = objDR!CodSede
FormsAuthentication.RedirectFromLoginPage(objDR("Nome"), False)
Else
saida.Visible = "True"
saida.Text = "Usuário/Senha inválido(s), tente novamente."
End If
Catch ex As Exception
saida.Visible = "true"
'Retirei a informação do código do Erro
'saida.Text = "Ocorreu um erro durante o Login : " & "<p>" & ex.Message()
'saida.Text = "Ocorreu um erro durante o Login, tente novamente mais tarde..."
'Caso ocorra algum erro de acesso ao Banco irei exibir
Response.Redirect("manutencao.aspx")
Finally
MyConn.Close()
End Try
End Function
Sub Login(ByVal Source As Object, ByVal E As EventArgs)
ValidaUsuario(nome.Text, senha.Text)
nome.Text = ""
senha.Text = ""
End Sub 'Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
' ValidaUsuario(Session("Usuario"), Session("Password"))
'End Sub
</script>
<html>
<head>
<title>Sistema Total</title>
<link href="StyleSheet.css" rel="stylesheet" type="text/css" />
</head>
<body style="font-family: Verdana; font-size: 11px; color: #333333; background-color: #BACFF1;">
<form id="frmLogin" runat="server" target="_parent">
Acesso Restrito:
<table runat="server" id="tbLogin" cellpadding="0" cellspacing="0">
<tr runat="server">
<td>
<span style="font-size:11px">Usuário:</span>
<br />
<asp:TextBox id="nome" runat="server" Width="90px"
CssClass="txtusuario" />
</td>
</tr>
<tr runat="server">
<td>
<span style="font-size:11px">Senha:</span>
<br />
<asp:TextBox id="senha" TextMode="password" runat="server" Width="90px"
CssClass="txtusuario" />
</td>
</tr>
</table>
<asp:Button id="Button1" runat="server" onClick="Login" text="Enviar"
CssClass="btenvialogin" />
<br />
<asp:Label id="saida" runat="server" forecolor="Red" />
</form>
</body>
</html> ------------------------------------------------------------------------------------------------------------------------ Agora onde determino o TimeOut no meu WebConfig: ------------------------------------------------------------------------------------------------------------------------ <authentication mode="Forms" >
<forms name="frmLogim" loginUrl="login.aspx" timeout="300" path ="/" />
</authentication> ------------------------------------------------------------------------------------------------------------------------
Indemberge Santos
Curtidas 0
Respostas
Luiz Maia
06/06/2009
Ola Indember,
Pelo que vi em seu codigo, não é problema de timeout. Deve ser outra coisa que esta errada em sua aplicação.
Segue um exemplo de uma pagina de login e o arquivo web.config que funcionam perfeitamente, de uma olhada e veja se compreende tudo:
protected void btEntrar_Click(object sender, EventArgs e)
{
string Usuario = tbUser.Text;
string Senha = tbPass.Text;
int codUsuario = Convert.ToInt32("0" + acesso.Acessar(Usuario, Senha));
if (codUsuario > 0)
{
DataRow drUsuario = acesso.BuscarUsuario(codUsuario);
if (drUsuario != null)
{
Session["CodUsuario"] = drUsuario["cod_usuario"].ToString();
Session["NomUsuario"] = drUsuario["nom_usuario"].ToString();
Session["IndAdmin"] = drUsuario["ind_admin"].ToString();
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(Usuario, cbGravarDadosCookie.Checked, 20);
string ticketCripto = FormsAuthentication.Encrypt(ticket);
HttpCookie cookieAutent = new HttpCookie(FormsAuthentication.FormsCookieName, ticketCripto);
Response.Cookies.Add(cookieAutent);
FormsAuthentication.RedirectFromLoginPage(Usuario, cbGravarDadosCookie.Checked);
Response.Redirect("Administracao/Obra.aspx");
}
}
else
{
FinalizarSessao();
}
}
ARQUIVO WEB.CONFIG:
<authentication mode="Forms">
<forms name="Admin" loginUrl="Login.aspx" timeout="100"/>
</authentication>
======================================================================
Pasta sem acesso :
<location path="Administracao">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
Caso não entenda algo, me avise, ok?
Abraços
Att
Luiz Maia
GOSTEI 0
Luiz Maia
06/06/2009
Ola Indemberg, tudo bem?
Conseguiu acertar a pagina de login?
Aguardo um retorno seu ok?
Abraços
Att
Luiz Maia
GOSTEI 0
Luiz Maia
06/06/2009
Ola Indemberg,
Como não obtivemos retorno de sua soliticitação, estamos procedendo com o fechamento do chamado. Caso a dúvida ainda persista você pode reabrí-lo.
Estamos a sua disposição para qualquer dúvida.
Abraços
Att
Luiz Maia
GOSTEI 0
Indemberge Santos
06/06/2009
Luiz;
Não respondi porque a situação ficou crítica, choveu de ligações.
Depois ao conversar com o Gerente de TI daqui descobrimos que o problema era no servidor onde está hospedada a aplicação.
Na quarta-feira passada foram feitos ajustes no servidor então começou a melhorar a situação.
Agora o tempo está melhor, mas mesmo assim estamos vendo para trocar de provedor.
Muito obrigado!
Indemberge
GOSTEI 0
Luiz Maia
06/06/2009
Que bom que resolveram o problema.
Qualquer dúvida, continamos a sua disposição.
Abraços
Att
Luiz Maia
GOSTEI 0