Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, geralmente uso um sistema de login que tenho para gerenciadores de conteúdo e atividades que, geralmente, o usuário não extrapola o tempo da sessão... No entanto, recentemente venho desenvolvendo algumas pequenas aplicações de gerenciamento de informações online, e surgiu a necessidade do usuário poder ficar o dia todo conectado com o mesmo login... Para evitar perder dados quando a sessão termina, e o usuário, somente ao clicar no botão "salvar" do formulário é que tinha a triste constatação disso, implementei o auto-salvamento no formulários... Mas ainda assim, não é o suficiente, então estou desenvolvendo algo que possa permitir a conexão ininterrupta, ou pelo menos, que quando isso acontecer, o usuário possa voltar ao ponto que estava trabalhando... Atualmente faço assim: Login.asp formulário
<div id="login"> <h1><a href="login.asp" title=""><%=strTituloLogin%></a></h1> <% If 3-Session("tentativas") = 1 Then Response.Write "<p class=""message""><font color=#FF0000>Última</font> chance</p>" ElseIf 3-Session("tentativas") <= 0 Then Response.Write "<p class=""message"" style=""color: red. "" align='center'><strong>Sistema Travado</strong>!<br>Você não tem permissão para acessar o sistema! <br />Seus dados serão armazenados para investigação!<br />" Response.write "Seu IP: " & request.ServerVariables("REMOTE_ADDR")& "</p>" Else Response.Write "<p class=""message"">Restam " & 3-Session("tentativas") & " chances...</p>" End If if strMensagem <> "" then response.Write("<p class='message'>"& strMensagem & "</p>") if strErro <> "" then response.Write("<div id='login_error'>"& strErro & "<br /></div>")<form action="login.asp" name="frmlogin" method="post"> <p> <label>Usuário<br> <input name="username" id="user_login" class="input" value="<%= Request.Cookies("sistema")("usuario") %>" size="20" tabindex="10" type="text"> </label> </p> <p> <label>Senha<br> <input name="password" id="user_pass" class="input" value="" size="20" tabindex="20" type="password"> </label> </p> <p class="forgetmenot"> <label> <% If Request.Cookies("sistema")("autologin") = "autologin" Then %> <input tabindex="90" type="checkbox" name="rememberme" value="a" checked> <% Else %> <input name="rememberme" value="a" tabindex="90" type="checkbox"> <% End If%> Manter conectado </label> <input type="hidden" name="lastUrl" value="<%=strIrPara%>"> </p> <p class="submit"> <input name="submit" <% If 3-Session("tentativas") <= 0 Then response.write "disabled " end if%> id="submit" value="Acessar" tabindex="100" type="submit"> </p> </form> <p id="nav" style="display:none. "> <a href="lembrarsenha.asp?msg=1" title="Encontrar sua senha">Perdi a minha Senha!</a></p> <% If 3-Session("tentativas") <= 0 Then Response.Write "<script language=""JavaScript"">"&vbcrlf Response.Write "document.getElementById('user_login').readOnly = true. " &vbcrlf Response.Write "document.getElementById('user_pass').readOnly = true. "&vbcrlf Response.Write "document.getElementById('rememberme').disabled = true. "&vbcrlf Response.Write "document.getElementById('submit').disabled = true. "&vbcrlf Response.Write "</script>"&vbcrlf End If 'w "isLoggedin <br>" guid = CreateWindowsGUID() rand = RandomPW(10)+RandomPW(5) ' Session Key 10+5 mais seguro do que 15 if InStr(strIrPara, "login.asp") > 0 then strIrPara = strSiteAdmin & "logout.asp" end if Response.Redirect strIrPara Else ' checa auto login 'só será usada no autologin strUrlRetorno = strIrPara if strUrlRetorno = "" then if request.querystring("gb") <> "" then 'strUrlRetorno = request("gb") if InStr(request("gb"), "login.asp") > 0 then strUrlRetorno = strSiteAdmin & "dashboard/dashboard.asp?cmd=resetall" else strUrlRetorno = request("gb") end if else strUrlRetorno = strSiteAdmin & "dashboard/dashboard.asp?cmd=resetall" end if end if If Request.Cookies("sistema")("autologin") = "autologin" and Request.Cookies("sistema")("password") <> "" Then sUsername = Request.Cookies("sistema")("usuario") sPassword = Request.Cookies("sistema")("senha") sPassword = TEAdecrypt(ew_Decode(sPassword), EW_RANDOM_KEY) sCliente = Request.Cookies("sistema")("ativador") If ValidateUser(sUsername, sPassword) Then Response.Redirect strUrlRetorno else Response.Redirect(strSiteAdmin & "login.asp?msg=4&autologin=1") End If End If End IfUsuarioLogin = '" & AdjustSql(Username) & "')" sSql = ewBuildSql(ewSqlSelect, ewSqlWhere, ewSqlGroupBy, ewSqlHaving, ewSqlOrderBy, sFilter, "") Set rs = conn.Execute(sSql) If Not rs.Eof Then Set objMD5 = New MD5 objMD5.Text = Password If CaseSensitive Then ValidateUser = (rs("UsuarioSenha") = objMD5.HEXMD5) Else ValidateUser = (LCase(rs("UsuarioSenha")) = LCase(objMD5.HEXMD5)) End If If ValidateUser Then session("primeiroacesso") = rs("UsuarioPrimeiroAcesso") session("usuarioativo") = rs("UsuarioAtivo") session("clienteID") = codCliente Session("" & Rand & "") = True '----------------------- Session("statusdologin") = "logado" Session("login") = rs("UsuarioLogin") Session("usuarioid") = rs("UsuarioID") strSQLatualiza = "Update `"& strUnique & "usuarios` SET UsuarioAtividade = 1, UsuarioRandKey = '" & Rand & "', UsuarioSID = '" & guid & "', UsuarioRemoteIp='" & Request.Servervariables("REMOTE_ADDR") & "', UsuarioTentativas = '" & now() & "' where usuariologin = '" & userid & "'" conn.execute strSQLatualiza End If End If rs.Close Set rs = Nothing conn.Close Set conn = Nothing End IfOlá Xanburzum,
Eu gostaria de ter a opção de o usar ficar conectado o tempo que ele quiser dentro de uma determinada data, ou seja, fica logado hoje, mesmo que desligue a máquina, ao voltar, já está logado... mas se for usar amanhã, tem que logar novamente...
essa questão da inatividade, é complicado, pois as vezes a pessoa abre o sistema, trabalha um pouco, sai da sala, vai almoçar e quando chega depois de 5 hora fora quer voltar de onde parou...nessa hora, o sistema desktop tem suas vantagens...
Eu tenho, em média, 05 objetos session, que eu preciso manter globalmente, durante toda a navegação... e sobre a atividade, eu tenho um campo que, se a pessoa tentar logar de outra máquina ela é avisada, mas isso pode ocorrer, por exemplo, se ela logou no firefox e agora está logando no chrome...
Sobre o estilo do antigo msn, tem algum código em algum lugar que eu possa consultar?
Eu teria como fazer um sistema (que pudesse personalizar) em asp.net e usar em conjunto com o asp? seria a melhor opção?
Obrigado,
Em ASP.Net terá um gerenciamento melhor e você consegue tranquilamente usar as duas extensões .asp e .aspx
aconselho a fazer com base de dados, estilo o antigo msn, por exemplo se o user tentar logar novamente ou tentar logar de outra máquina fica sabendo e aumentar o tempo de session, mas tome cuidado no caso de usuário ser deslogado por inatividade, e isso é um grande dilema, por mais que o user fique no máximo seria 16:00 horas logado , já é um bom tempo para o user ver artigo,estudar pelo site etc,tem gente que põe 24h, ou um parâmetro razoável para não derrubar quem esta, Além dessa verificação,(colocar um campo de logon no database), eu faria uma validação adicional por micro armazenando também o IP do cidadão...
precisa definir um tempo razoável para acesso em cada pagina e cada vez que o usuário mudar de pagina armazena a data/hora desta ultima atividade
com base nesta informação e no tempo máximo de inatividade que permitir conseguirá definir que ficou off e quem segue on. E veja se tem ip dinâmicos. Em ASP.Net vc terá um maior gerenciamento de sessão, na onde será necessário manter o estado de objetos mesmo depois do envio para o servidor. Muitas vezes essas informações que desejamos guardar são pertinentes apenas para a página atual, ou seja, quando desejamos guardar as informações de objetos em uma mesma página e não na aplicação toda.