Fórum JSF - Controle de session #4596
16/04/2009
0
Pirahy Alimentos
Curtir tópico
+ 0Posts
17/04/2009
Henrique Weissmann
Dê uma olhada neste artigo da DevMedia a respeito:
https://www.devmedia.com.br/articles/viewcomp.asp?comp=1720
No caso, o seu filtro deverá verificar a presença do usuário na sessão e, não o encontrando, fazer o redirecionamento desejado.
Gostei + 0
17/04/2009
Pirahy Alimentos
Gostei + 0
23/04/2009
Henrique Weissmann
o funcionamento de um filtro na plataforma Java Enterprise Edition funciona da seguinte maneira: antes de qualquer requisição ser enviada a um servlet, o servidor verifica a existência de algum filtro e, estando este implementado/presente na aplicação, executa o método doFilter do mesmo.
Então, dentro do método doFilter, o próprio filtro especifica se será feito o redirecionamento para determinada URL ou não. No caso do exemplo que te passei, vamos dar uma olhada neste método:
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
// É obtida a sessão do usuário
HttpSession session = ((HttpServletRequest)req).getSession();// É verificada a existência de uma instância da classe usuário dentro da mesma
Usuario usuario = (Usuario)session.getAttribute("usuario"); if(usuario==null){// É definido um novo atributo na sessão chamado msg, contendo a mensagem "Você não está logado no sistema!"
session.setAttribute("msg","Você não está logado no sistema!");// Finalmente, é feito um redirecionamento para a página index.jsp, presente um diretório acima da URL do filtro
((HttpServletResponse)res).sendRedirect("../index.jsp"); }else{ chain.doFilter(req, res); } }
Porém, para que o filtro funcione, é necessário que você também configure o seu arquivo web.xml para torná-lo visível ao servidor.
<filter> <filter-name>Filtro Seguranca</filter-name> <filter- class>br.com.javamagazine.jairelton1.FiltroSeguranca</filter-class> </filter> <filter-mapping> <filter-name>Filtro Seguranca</filter-name> <url-pattern>/admin/*</url-pattern> </filter-mapping>
No caso, como você pode ver, são definidos os seguintes atributos dentro das configurações:
filter-name: o nome do filtro. Pode ser o nome que você quiserfilter-class: o nome da classe que implementa a interface Filterurl-pattern: quais os padrões de url que o filtro deverá interceptar
Pelo que você me contou no seu post anterior Pirahy, eu acredito que o seu problema deva estar no terceiro parâmetro. O filtro só é ativado quando as URLs batem com o padrão definido neste parâmetro.
Sendo assim, se o usuário acessar a URLhttp://www.suaaplicacao.com.br/qualquercoisaO filtro não será ativado.Porém, se acessarhttp://www.suaaplicacao.com.br/admin/qualquercoisa.jspO filtro já será chamado.
Se você quisesse que o filtro fosse aplicado a todo o seu site, teria de aplicar uma url comourl-pattern:/*
Porém, neste caso, você teria um problema, pois mesmo o seu servlet responsável pelo login seria bloqueado. Neste caso portanto, você precisaria trabalhar a URL dentro do método doFilter do seu filtro para que lidasse com esta excessão.
Gostei + 0
27/04/2009
Devmedia
a resposta do consultor solucionou a sua dúvida? Podemos encerrar o chamado?
Gostei + 0
29/04/2009
Devmedia
por falta de resposta encerramos o seu chamado. Caso ainda possua alguma sobre esse assunto, por favor, post a mesma que o consultor voltará a lhe atender.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)