Alguém sabe o motivo ?
No servlet normal funciona, no filter retorna nulo…
tem como ajeitar isso ? alguma configuração la no securityfilter-config.xml
Valeu!
posta o codigo !
LoginFilter
/** DO FILTER **/
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException
{
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
verifyPerfilInSession(request); // Função que verifica o usuário logado
try
{
PerfilLogadoController controller = (PerfilLogadoController) request.getSession().getAttribute("perfilLogadoController");
Integer status = controller.getStatusPerfil();
if(status.equals(StatusPerfil.INATIVO.code))
{
response.sendRedirect(request.getContextPath() + "/perfil/ativar");
}
else if(status.equals(StatusPerfil.NOVO.code))
{
response.sendRedirect(request.getContextPath() + "/perfil/new");
}
else
{
chain.doFilter(request, response);
}
}
catch (Exception e) {}
}
/** VERIFY PERFIL IN SESSION **/
private void verifyPerfilInSession(HttpServletRequest request)
{
Object obj = request.getSession().getAttribute("perfilLogadoController");
if(obj == null || (obj != null && (((PerfilLogadoController) obj).getPerfilLogado() == null)))
{
System.out.println("- Executando Redirect Login");
PerfilLogadoController perfilLogadoController;
if(obj == null)
perfilLogadoController = new PerfilLogadoController();
else
perfilLogadoController = (PerfilLogadoController) obj;
try
{
UsuarioEntity userEntity = (UsuarioEntity) request.getUserPrincipal(); // Retornando null, quando executa o chain.doFilter, começa a funcionar.. lá no servlet por exemplo
if(userEntity != null)
{
System.out.println("- Usuário: " + userEntity.getName());
System.out.println("- E-mail: " + userEntity.getEmail());
PerfilUsuario perfil = new PerfilUsuarioFacade().loadPerfil(userEntity);
if(perfil != null)
{
System.out.println("- Perfil Encontrado, Incluindo na Sessão");
perfilLogadoController.setPerfilLogado(perfil);
}
else
{
System.out.println("- Usuário não Possui Perfil na Rede Social");
Usuario usuario = new Usuario(userEntity.getIdUsuario());
usuario.setNome(userEntity.getName());
usuario.setEmail(userEntity.getEmail());
usuario.setLogin(userEntity.getLogin());
perfil = new PerfilUsuario();
perfil.setUsuario(usuario);
perfilLogadoController.setPerfilLogado(perfil);
}
}
else
{
System.out.println("- Não Possui User Principal");
}
} catch (Exception e) {
e.printStackTrace();
}
perfilLogadoController.initController(request, Scope.SESSION);
}
}