Olá, fiz uma aplicação e queria que o usuário ficasse impossibilitado de acessar algumas páginas diretamente (no caso, por GET), ou seja, quero que ele siga o fluxo dos links e botões e seus direcionamentos, sem poder acessar páginas diretamente pela URL. Fui no Web.XML e coloquei
<security-constraint>
<display-name> Prevenindo acesso direto </display-name>
<web-resource-collection>
<web-resource-name>Raw-JSF-JSP-Pages</web-resource-name>
<url-pattern>/informacoes.xhtml</url-pattern>
<url-pattern>/rodape.xhtml</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<description>Sem regras, apenas bloqueio acesso direto aos JSPs</description>
</auth-constraint>
</security-constraint>
e funcionou bem, evitando que o usuario digitasse “informacoes.xhtml” na barra de endereço e fosse diretamente para esta tela. No entanto, funcionou para o GET devido a linha “GET”. Simulei um post (através de um simples form em HTML) e consegui acessar diretamente, então fui no Web.xml novamente e retirei a linha “GET”, o que fez com que o GET e o POST fossem bloqueados.
Entretanto, agora surge um problema, até a navegação de um h:commandButton está sendo barrada (visto que ele dá um POST, se não me engano, ou seja barrou tudo, inclusive a navegação pelos actions):
Ou seja, não quero exigir que o usuário esteja logado, só quero evitar que ele digite a url ou que use um post através de um formulário, mas quero que o h:commandButton consiga acessar normalmente. Alguém já passou por isso? lembrando que não quero realizar controle de login, apenas deixar os direcionamentos exclusivos pelos metodos dos managedBeans.