Verificando usuario Logado

4 respostas
D

Falae pessoal, tenho uma pagina de um site q so queria que fosse acessada se o usuario estivesse logado pois seria uma coisa unica de cada um. Baseado num exemplo que eu vi, teria uma pagina de login e outra de logado. Ai vao os codigos(não coloquei tudo pra nao confundir):

Login.jsp
...
if ( bdBean.login(usuario, senha) ) {//Bean que faz o trabalho com o BD

	request.getSession(true);
	session.setAttribute("logado", new String("true"));
	session.setAttribute("usuario", usuario);
	response.sendRedirect(base + "?acao=logado");
}
...
Logado.jsp
...
if (session==null) {
		response.sendRedirect(base + "?acao=login");
}
else {
	String logado = (String) session.getAttribute("logado");
		if (logado.equals("false"))
			response.sendRedirect(base + "?acao=login");
}
...
<A HREF="<%=base%>?acao=login" onClick="<% session.setAttribute("logado", new String("false")); %>">Logout</a>
Tudo funciona normal, a ideia seria q quando o usuario fizesse logout o atributo logado ficasse false mas ele sempre fica false, mesmo quando não é clicado. Outro problema é quando a pagina q teria q ver se ele ta logado ou não, nao sei pq nao funciona direito: Outra.jsp
...
<%
if (session == null)
	response.sendRedirect(base + "?acao=login");
else {
	String logado = (String) session.getAttribute("logado");
		if ( logado == null || logado.equals("false") )
			response.sendRedirect(base + "?acao=login");
		else {
			//Aqui entra um formulario que so é mostrado se tiver logado
...
%>
É isso ae. Talvez a maneira toda não seja a melhor mas se alguem ver o erro ou souber um local q mostre um jeito melhor tb seria uma boa. É uma coisa comum, tipo aqui onde vc so posta mensagem se tiver logado mas não achei quase nada. :wink:

4 Respostas

D

opa cara… blz?

entao… essa logica toda ta bem confusa… heheeh…
tem uma falha grave de segururança aí… pq vc pode acessar uma área de só pra “logados” apenas mudando a URL…
e isso tudo ta te confundindo tb

faz assim…
1º passo - na pagina de login, verifica nome e senha… se estiverem corretos, poe o usuário na sessao…

2º passo… na pagina de logados, apenas verifique se a sessao q deveria conter o objeto usuario está nula… se for null, da um redirect pra pagina de login… e nao for nula, exibe a pagina pro usuário…

3º passo… para deslogar, vc teria q criar outra pagina… q fazia a simples ação de remover o usuario da sessao… vc pode matar todas as sessoes abertas por aquele usuario assim session.invalidate()
se depois disso o usuario tentar acessar a pagina de “logados” ele será redirecionado pra pagina de login…

agora uma dica… pra aprendizado é legal fazer tudo com JSP…
mas depois q vc entender como isso funciona, vc pode criar um SERVLET q gerencia os logins… nesse servlet vc pode abrir a sessoes pros usuários e nele mesmo vc pode encerrar a sessao… mas servlet é outra história… mas qdo vc for fazer isso e se tiver alguma duvida, pode me procurar q eu te ajudo!

abraços!

D

Blz, valeu DanielBadawi, isso tava complicado mesmo :lol: . Entendi tudo, vo fazer essas mudanças e depois digo o resultado. Falow :wink:

D

Opa, fiz as mudanças, parece que funciona agora :grin: :

Login.jsp
...
if ( bdBean.login(usuario, senha) ) {

		request.getSession(true);
		session.setAttribute("usuario", usuario);
}
É necessario esse request.getSession(true)? Logado.jsp
...
String usuario = (String) session.getAttribute("usuario");
	
	if (session==null)
		response.sendRedirect(base + "?acao=login");
	else {
		if (usuario==null)
			response.sendRedirect(base + "?acao=login");
	}
...
<A HREF="<%=base%>?acao=logout">Logout</a>
Logout.jsp
...
<% session.invalidate(); %>
...
Ta certo? So mais uma coisa, nessa pagina q chama o login.jsp se nao tiver logado, depois q o usuario fizer o login, como ele poderia voltar automaticamente pra pagina q chamou a de login? Eu nao poderia colocar um link pq se fosse um login simples ele seria enviado pra aquela pagina q não teria nada a ver agora. Deu pra entender :lol: ? :wink:
M

Salve,

Cara seu código ficou bem mais limpo e funcional. Funciona beleza.

para rederecionar use a propriedade sendRedirect(java.lang.String location) desta forma:

response.sendRedirect("Logado.jsp");
Criado 14 de fevereiro de 2005
Ultima resposta 14 de fev. de 2005
Respostas 4
Participantes 3