Boa tarde amigos…
Tenho uma aplicação que possui um página login e senha. Um Servlet autentica o usuário que se loga e depois o manda para um painel de administrador (admin.jsp). Pois bem. Quero saber como faço para evitar o acesso da página admin.jsp diretamente pela url. Posso simplesmente colocar lá “http://localhost:8008/minhaAplicacao/admin.jsp” que ela entra. Devo setar alguma variável na JSP?
Não tenho muita idéia do que fazer.
Abraços, desde já agradecido.
Olá,
Existem algumas maneiras diferentes de fazer o que você precisa, cada uma com vantagens e desvantagens:
-
Colocar a página no diretório WEB-INF. Ela não pode ser acessada diretamente, mas se um Servlet fizer forward para minhaAplicacao/WEB-INF/admin.jsp funciona.
-> Super-rápido de fazer, mas não é flexível, para cada página que tiver que proteger você vai ter que movê-la e modificar o redirecionamento. Se for só a admin.jsp tudo bem…
-
Criar um Filtro para interceptar as requisições e verificar se o usuário logado é admin.
-> Essa maneira é bastante utilizada, relativamente simples de implementar e é mais flexível que a primeira, se precisar controlar outros acessos só precisa mexer no filtro. Mas também se tiver muitas regras fica uma bagunça.
-
Configurar todo o controle de acesso da sua aplicação através de security-constraints (O JAAS, que foi sugerido pelo wbdsjunior)
-> Esse é o jeito “Java EE” de fazer, dá trabalho no início mas depois tudo fica bem robusto e flexível, as regras são modificadas por simples alterações no arquivo web.xml.
Vou dar uma olhada amigos…
muito obrigado pelas dicas.
Vou tentar sua primeira dica gomesrod!
São somente tres páginas que preciso “proteger”.
Acho que a forma com JAAS é um pouco complexa para o que quero.
Abraços.
Funcionou perfeitamente!Coloquei três jsp’s no diretório WEB-INF. Ficou perfeito!Abraços… Deus abençoe a todos!