Estou seguindo a resposta de @BalusC para JSF 2.0: como obter a URL que é inserida na barra de endereços do navegador para restringir as páginas de usuários que não estão conectados.
Filtro:
public class RestrictPageFilter implements Filter{ FilterConfig fc; @Override public void init(FilterConfig filterConfig) throws ServletException { fc=filterConfig; } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpreq = (HttpServletRequest) request; HttpServletResponse httpres = (HttpServletResponse) response; if (httpreq.getUserPrincipal() == null) { httpreq.getSession().setAttribute("from", httpreq.getRequestURI()); httpres.sendRedirect("/pages/login.xhtml"); } else { chain.doFilter(request, response); } } @Override public void destroy() { // TODO Auto-generated method stub } }
web.xml:
Admin pages /admin/* /restricted/* GET POST ADMIN User pages /restricted/* GET POST ADMIN USER RestrictPageFilter gov.denis.chanceryweb5.filter.RestrictPageFilter RestrictPageFilter /restricted/*
glassfish-web.xml
ADMIN ADMIN USER USER
reino no console do glassfish do gui:
Ao acessar meu aplicativo da web, no navegador, vejo isso por algum motivo? porque?
Você está vendo o diálogo associado ao método de autenticação BASIC.
Atualmente, você tem os elementos login-config do seu arquivo web.xml comentados … para que a configuração não seja aplicada.
Os servidores GlassFish 3 têm uma configuração de login padrão que é usada quando um aplicativo implantado pelo usuário especifica uma restrição de segurança, mas não especifica uma configuração de login …
O efetivo login-config para o seu aplicativo, na verdade, é algo como isto
BASIC file
O login-config padrão é especificado em glassfish3/glassfish/domains/