Bom, estou pegando o código desenvolvido de um sistema já existente e tentando adaptar esse código para a versão mobile do primefaces.
Ao atribuir o usuario no meu método logar ele me mostra o seguinte erro por depuração(eu criei um System.out.println para me mostrar os erros):
INFO: ERRO: java.lang.ClassCastException: java.lang.String cannot be cast to org.springframework.security.core.userdetails.User
nessa seguinte linha:
user = (User) authentication.getPrincipal();
o meu método inteiro de logar:
public String logar() throws ServletException, IOException {
try {
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
RequestDispatcher dispatcher = ((HttpServletRequest) context.getRequest()).getRequestDispatcher("/j_spring_security_check");
dispatcher.forward((HttpServletRequest) context.getRequest(), (HttpServletResponse) context.getResponse());
FacesContext.getCurrentInstance().responseComplete();
SecurityContext contextSpring = SecurityContextHolder.getContext();
// SecurityContext contextSpring = (SecurityContext) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("SPRING_SECURITY_CONTEXT");
System.out.println("contextSpring: "+contextSpring);
User user = null;
if (contextSpring instanceof SecurityContext) {
Authentication authentication = contextSpring.getAuthentication();
System.out.println("PRINCIPAL"+authentication.getPrincipal());
System.out.println("AUTHENTICATION: "+authentication);
if (authentication instanceof Authentication) {
System.out.println("user: "+authentication.getPrincipal());
System.out.println("PESSSSSOUOUOUOUOO");
user = (User) authentication.getPrincipal();
System.out.println("HTTPSESSION: ");
HttpSession session = (HttpSession) context.getSession(false);
session.setAttribute("usuarioLogado", usuarioFacade.consultaUsuario(user.getUsername()));
Usuario usu = (Usuario) session.getAttribute("usuarioLogado");
usuario = usu;
unidade = usuario.getUnidade();;
// id_cidade = usu.getCidade();
// id_funcao = usu.getFuncao();
System.out.println("USUARIO: "+usuario);
verificarSenha(user.getPassword(), usu.getUsername());
}
}
} catch (Exception ex) {
FacesUtil.exibirMensagemErro(ex.getMessage());
System.out.println("ERRO: "+ex);
}
return null;
}
alguém sabe solucionar esse erro?
INFO: ERRO: java.lang.ClassCastException: java.lang.String cannot be cast to org.springframework.security.core.userdetails.User