Como fazer voltar a pag de login se tentar acessar alguma pag quando não está logado com JSP e serv?

2 respostas
S
Estou apredendo JSP, servlet e hibernate na facu e estou com dificuldade de achar uma solução para minha dúvida, se o usuário n estiver logado e tentar logar qualquer outra página do sistema deverá voltar para a página de login mas n estou conseguindo fazer isso. esse é o HTML da minha tela de login:
<form action=ControleLogin method=post>
				<div style="width: 250px; height: 100px; border: solid 1px;">
					<table>
						<tr>
							<td>
								<span>Usuário:</span>
							</td>
							<td>
								<input type=text name=usuario />
							</td>
						</tr>
						<tr>
							<td>
								<span>Senha:</span>
							</td>
							<td>
								<input type=password name=senha />
							</td>
						</tr>
						<tr>
							<td colspan="2">
								<input type=submit value=Entrar />
							</td>
						</tr>
					</table>
				</div>
			</form>
Esse é o código que está no método doPost do servlet: Obs: A string logado é o que estou tentando usar para verificar se usuário está logado. Obs2:Aqui estou usando hibernate, está funcionando então acho que n preciso colocar aqui.
String usuario = request.getParameter("usuario");
		String senha = request.getParameter("senha");
		HttpSession sessao = request.getSession();	
		String logado = "NAOLOGADO";
		Login login = new LoginDAO().get(usuario);
		
		if(login != null) {
			  if( login.getSenha().equals(senha) ) {					  
				  response.sendRedirect("home.jsp"); 
				  logado = "LOGADO";
			  }
		  }
		
		sessao.setAttribute("LOGADO", logado);
Esse é o código que está em home.jsp na tag BODY que estou testando o código:
<%
	String logado;
	HttpServletResponse resp = null;
	
	HttpSession sessao = request.getSession();
	logado = (String) sessao.getAttribute("LOGADO");
	
	if (logado.equals("LOGADO")) {%>
		<span>FUNCIONOU</span>
	<%} else {
		resp.sendRedirect("index.jsp");
	}%>

Alguém pode me ajudar nisso, eu sei que o código está uma m.... mas estou ainda apredendo e n sei todas as manhas.

2 Respostas

P

Olá,

Na JSP, utilize objetos implícitos. Não é necessário obter novas referências pois eles já estão lá!

http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPIntro7.html

E escreva este código num arquivo separado para ser incluído de forma estática em todas as
JSPs que precisam estar na sessão. Para utilize a diretiva include:

http://java.sun.com/products/jsp/tags/11/syntaxref11.fm6.html

[ ]'s

fabiomedeirosf

Olá... estou pela terceira vez tentando responder a msg rsrs o guj tava estourando erro de mysql, enfim...

Voce pode criar um filtro de seguranca pra fazer isto. Basta criar um
classe que implemente Filter, e nele fazer sua lógica de verificacao,
onde o usuario esta ou nao logado.

No meu exemplo, verifiquei se estava na sessao:

public class SecurityFilter implements Filter {

	public SecurityFilter() {

	}

	@Override
	public void destroy() {
		

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

		HttpServletRequest httpRequest = (HttpServletRequest) request;

		if (!verificarUsuarioLogado(httpRequest)) {

			// se não existir um usuário logado para o sistema, redireciona para
			// a página de login

			HttpServletResponse retorno = (HttpServletResponse) response;
			retorno.sendRedirect(httpRequest.getContextPath()
					+ "/login/loginDefault.jsf");

		} else {

			// se o usuário estiver logado, então prossegue a solicitação
			chain.doFilter(request, response);

		}

	}

	private boolean verificarUsuarioLogado(HttpServletRequest request) {

		HttpSession sessao = request.getSession();

Feito isto, basta mapear ofitro no web.xml, e indicar a hierarquia de
diretórios que deverao passar pelo filtro:

<filter>
  <display-name>SecurityFilter</display-name>
  <filter-name>SecurityFilter</filter-name>
  <filter-class>pocotes.SecurityFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>SecurityFilter</filter-name>
  <url-pattern>/sistema/*</url-pattern>
 </filter-mapping>

veja que no meu exemplo, o filtro estará 'funcionando'para todo o conteúdo
do diretório sistema/*

Espero ter ajudado

Criado 7 de setembro de 2010
Ultima resposta 7 de set. de 2010
Respostas 2
Participantes 3