Não adianta colocar um login no sistema, se a próxima página pode ser muito
bem visualizada digitando seu endereço no navegador.
E isso que estou tentando aprender.
Como proteger as páginas?
Obrigado.
Não adianta colocar um login no sistema, se a próxima página pode ser muito
bem visualizada digitando seu endereço no navegador.
E isso que estou tentando aprender.
Como proteger as páginas?
Obrigado.
Sessão, Cookies etc.
Tem vários topicos sobre sessao e cookies aqui, de uma pesquisada
Se quiser algo mais robusto - e difícil de configurar
- Acegi
No web.xml tem como vc inserir definições de segurança.
se não me engano, pesquise sobre essa tag e outras relacionadas.
O que estou querendo é tipo o include do php. É tão simples. Se o usuário já fez login, então
a página que possui o include será aberta, pois a sessão já se iniciou.
Na verdade, um include iria redirecionar a página do mesmo modo que um jsp:forward daí o que
eu estava querendo era um controle de sessão mesmo.
Não consegui encontrar em lugar nenhum.
Vai a sequência de páginas para a parte de login do sistema:
a página login é para se logar no sistema, onde a página verificar login verificará se foi digitado corretamente. Se não foi, então redireciona para a página de login novamente. Se foi, então acessa a página administracao.
Certo. Até aí eu consegui!
Mas o problema é que se eu digitar diretamente no browser:
http://localhost:8080/administracao.jsp
vai aparecer a página de administracao desprotegida, sendo que eu nem fiz login nem nada.
É isso que estou tentando explicar. Preciso controlar a sessão. Acessar a página protegida apenas se o usuário digitar o login corretamente.
Como faço isso? Cookies ou sessão? ou o quê?
Obrigado.
use um filtro
por ex:
package controller.filters;
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import model.beans.UsuarioVO;
/**
*
* @author joaosavio
*/
public class MainFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpSession session = ((HttpServletRequest)request).getSession();
UsuarioVO usuarioVO = new UsuarioVO();
usuarioVO = (UsuarioVO)session.getAttribute("usuarioVO");
if(usuarioVO == null) {
RequestDispatcher rd = request.getRequestDispatcher("/faces/view/index.jsp");
rd.forward(request, response);
}
else if (usuarioVO.getStatus() == 1) {
chain.doFilter(request, response); //OK
}
else {
RequestDispatcher rd = request.getRequestDispatcher("/faces/view/index.jsp");
rd.forward(request, response);
}
}
public void init(FilterConfig arg0) throws ServletException {
}
public void destroy() {
}
}
quer a coisa mais simples? faz um if, se a sessao com o nome q vc quiser existir, se o usuario nela existir, mostra a pagina, senao redireciona pra outra.
if{
}else{ redireciona }Desculpe mas não sei utilizar filtros.
Quando fui utilizar seu código, o último import não foi encontrado.
import model.beans.UsuarioVO;
Daí eu não poderia utilizar no momento, se não sei lhe dar com isso.
Mas obrigado pela dica.
E jpcasati, pode me ajudar com um exemplo de um if?
Por exemplo: eu poderia testar este if na página que verificaria o login, não é?
Mas aí eu teria que utilizar cookies? Um exemplo do que você disse seria bom, pois entendi
o que quis dizer mas não sei o que devo fazer. É meu primeiro sistema web e quero que ele tenha segurança também.
Obrigado.
quer a coisa mais simples? faz um if, se a sessao com o nome q vc quiser existir, se o usuario nela existir, mostra a pagina, senao redireciona pra outra.if{
}else{ redireciona }
Fiz um if mas esta me atrapalhando encerrar a sessão, por isso retirei.
Veja:
<% if (session != null) {
%>
<jsp:forward page="paginaProtegida.jsp" />
<% } %>
Mas a página continua desprotegida.
vc usar javabeans em cada pagina fazendo uma consulta ao banco a cada pagina a ser aberta
por exemplo
<jsp:use beans id="consulta" class="banco.consultar" />
<%
String Nome = (String ) session.getAttribute(nome);
String Senha =(String) session.getAttribute(senha);
// atributos colocados na sessao apos o login... por uma servlet qualquer
boolean existe = consulta.validaUsuario(Nome,Senha); //metodo feito em uma classe java
if (! existe )
response.sendRedirect("login.jsp")
else {
%>
/// todo o codigo html aqui...
</html>
// e por fim
<%
}//fecha o else
%>
bom espero ter ajudado...
Vou verificar depois.
Mas me diga uma coisa: eu uso o NetBeans e o que preciso fazer para utilizar este código que você postou?
obrigado.
[]s.
Deu certo!
Eu criei um teste de sessão:
if(sLogin== null) {
response.sendRedirect("login.jsp");
}
Daí agora toda vez que minha sessão retorna nula (se eu for direto
para a página protegida), vai redirecionar para o login.
Obrigado.
Aí galera, estou precisando de fazer um sistema de login no qual um administrador tenha acesso para cadastrar os ususarios, sendo que todos fazem login
na mesma pag, ´ou seja, qd o administrador loga ele tem acesso a uma pag e os usuarios a outra, alguem sabe como fazer isto???
Obrigado,
Abç
Bom, existe várias maneiras de se fazer isso.
A primeira é a popular, onde possui um painel pra logar somente admins e outro painel (form) pra logar apenas usuários.
Cada um vai criar sessões diferentes e isso resolve!
A segunda: utiliza realm ! Com o realm você não precisa ficar criando estes testes em cada página, basta deixar um diretório, por exemplo, admin com as páginas do admin e outro como users para os usuários e setar permiss~eos no context.xml. Não é bem melhor?
Bom, mas esta é mais complicada, no momento não posso ajudar, pois estou muito enrolado com trabalhos de última hora e meu sócio tá exigindo que eu não faça outra coisa.
Qual prefere?
[]s
Valew galera, consegui com Realm. Obrigado a todos
vc usar javabeans em cada pagina fazendo uma consulta ao banco a cada pagina a ser aberta por exemplo<jsp:use beans id="consulta" class="banco.consultar" /> <% String Nome = (String ) session.getAttribute(nome); String Senha =(String) session.getAttribute(senha); // atributos colocados na sessao apos o login... por uma servlet qualquer boolean existe = consulta.validaUsuario(Nome,Senha); //metodo feito em uma classe java if (! existe ) response.sendRedirect("login.jsp") else { %> /// todo o codigo html aqui... </html> // e por fim <% }//fecha o else %>bom espero ter ajudado...
Olá Rodrigo, bom dia.
Estou com a mesma dificuldade do colega, e achei interessante a soluçao que vc deu. Mas estou com dúvidas na linha que vc coloca
Agradeço a ajuda!!
Deu certo!Eu criei um teste de sessão:
if(sLogin== null) { response.sendRedirect("login.jsp"); }Daí agora toda vez que minha sessão retorna nula (se eu for direto
para a página protegida), vai redirecionar para o login.Obrigado.
Amigo, estou com a mesma dúvida e ví que vc achou uma solução. Só que eu fiquei com as seguintes dúvidas:
eu devo inserir esse código em todas as minhas .jsp que vem depois da login?
quem é sLogin? posso substituí-lo por session?
Agradeço.