Bom amigos, tô fazendo um sistema web utilizando o Netbeans 6.9 com o Struts 1.3.8 que já vem com a IDE.
Até aí tudo bem, fiz a tela de login, cadastro, etc.
Assim que o usuário é validado eu insiro o objeto na sessão e já verifiquei em outras Actions se o usuário está na sessão para continuar a execução e exibição de algumas outras páginas JSP.
O problema é, como eu posso fazer essa verificação de acesso do usuário, sem precisar colocar em toda Action ou toda JSP?
Vi a utilização de Interceptors, porém, só vi exemplos utilizando Struts 2.
Algumas páginas o acesso é livre sem necessário o Login, mas outras eu preciso verificar se está ou não logado.
A dúvida principal é: como verificar a sessão antes de executar determinadas actions sem precisar fazer em toda Action?
Outra dúvida, como impedir o acesso das JSPs pela URL? Todas são acessadas através de Actions, porém, se eu digitar o endereço da JSP no navegador ainda consigo entrar nessas páginas.
Maracuja,
dei uma pesquisada, li e não encontrei nenhum exemplo “útil” da coisa funcionando. Pra falar a verdade, tudo que encontrei foi bem confuso.
A utilização de Filters como vc indicou, no caso seria pra proteger as páginas JSPs de serem acessadas diretamente pela URL correto?
E em relação ao controle do usuário na sessão?
Vi em alguns lugares que criaram uma classe e um método para essa verificação. Esse método era executado no início de todas Actions onde era necessária a validação de Login.
Tô quase pensando em fazer isso.
Vi não me lembro onde e já faz tempo, que era criado uma classe (parecidíssima com uma Action) que era executada automaticamente antes de qualquer action e ela fazia essa verificação de login e em seguida encaminhava para a action definida no form JSP (se o usuário estivesse logado). Acho que é o tal do Interceptor
O problema do google é que agente acha muita coisa, mas dependendo do caso apenas 1% presta.
Se tiver um exemplo funcional do Filter para a URL será de grande ajuda.
Bom, consegui resolver aqui depois de muita pesquisa e tentativas e erro.
Todas as JSPs que se encontram no diretório “paginas” não podem ser acessadas pela URL e irão retornar para a tela de login (welcomeStruts.jsp).
Você só conseguirá entrar nelas pela URL caso tenha logado no sistema.
Não é isso exatamente o que eu quero, além de proibir o acesso das JSPs também quero impedir o acesso das Actions a não ser que o usuário esteja logado. Acho que isso é possível de ser feito criando um Filter separado para as actions, o que eu tentarei em seguida.
Segue o código para ajudar alguém que precise.
Você deve implementar este tipo de segurança usando um filter.
Pode aprender um pouco mais sobre o assunto olhando aqui ou procurando mais no google.
Essencialmente vc declara um filtro, para que todas as suas requisições “passem” por ele, e ai então vc pode fazer alguma validação, por exemplo, se existe um atributo “usuário” na sessão, caso não tenha redireciona-lo para uma página de acesso negado e etc.