alextr
Junho 26, 2013, 3:14pm
#1
Boa Tarde,
Bom, eu tenho um método que de login chamado logar, nele possui um if:
if (authentication instanceof Authentication) {
ao clickar em logar ele não passa desse if e então não continua mais a verificação do login.
Eu acredito que é porque não esta sendo instanciando porem não sei como arrumar isso.
logo abaixo todo o método de login:
public String logar() throws ServletException, IOException {
System.out.println("METODO LOGAR");
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();
User user = null;
if (contextSpring instanceof SecurityContext) {
Authentication authentication = contextSpring.getAuthentication();
System.out.println("ContexSpring isntaceado");
if (authentication instanceof Authentication) {
System.out.println("autentication instaceado");
user = (User) authentication.getPrincipal();
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();
verificarSenha(user.getPassword(), usu.getUsername());
}
}
} catch (Exception ex) {
FacesUtil.exibirMensagemErro(ex.getMessage());
}
return null;
}
Agradeço muito sua ajuda obrigado.
Nesta linha:
Authentication authentication = contextSpring.getAuthentication();
o método contextSpring.getAuthentication(); pode estar retornando null fazendo
com que a referência authentication não passe no teste instanceof.
alextr
Junho 26, 2013, 3:30pm
#3
Opa, muito obrigado pela sua resposta mais não tenho ideia de como arrumaria isso, como arrumo poderia me dar uma luz?
alextr
Junho 27, 2013, 1:41pm
#4
Não entenod o porque, será que o spring esta enviando dados para bean?
Em que parte da aplicação você está fazendo a chamada a SecurityContextHolder.getContext() ?
Se este for chamado durante uma invocação na qual não há Filters aplicados, pode-se ter a impressão
que o SecurityContext está sendo retornado(já que SecurityContextHolder.getContext() sempre retorna um context)
mas na verdade não tem nada e você não consegue pegar a Authentication
alextr
Junho 27, 2013, 2:07pm
#6
O SecurityContext contextSpring = SecurityContextHolder.getContext(); esta logo no codigo abaixo:
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();
User user = null;
if (contextSpring instanceof SecurityContext) {
Authentication authentication = contextSpring.getAuthentication();
System.out.println(“TESTE”);
// NÃO PASSA NA VERIFICAÇÃO PORQUE:
//Authentication authentication = contextSpring.getAuthentication();
//ta retornando null tem que ver o porque
if (authentication instanceof Authentication) {
System.out.println("BOA");
user = (User) authentication.getPrincipal();
HttpSession session = (HttpSession) context.getSession(false);
session.setAttribute("usuarioLogado", usuarioFacade.consultaUsuario(user.getUsername()));
Usuario usu = (Usuario) session.getAttribute("usuarioLogado");
usuarioSessao = usu;
usuarioAutorizacoes = usu.getUsuarioAutorizacoes();
nome = usu.getNome();
admissao = usu.getAdmissao();
bairro = usu.getBairro();
celular = usu.getCelular();
cpf = usu.getCpf();
data_cadastro = usu.getData_cadastro();
email_corp = usu.getEmail_corp();
email_part = usu.getEmail_part();
endereco = usu.getEndereco();
// escala = usu.getEscala();
unidade = usu.getUnidade();
fechaOcorrencia = usu.getFechaOcorrencia();
visuOcorrencia = usu.getVisuOcorrencia();
alocaOcorrencia = usu.getAlocaOcorrencia();
cadastraEquipamento = usu.getCadastroEquipamento();
matricula = usu.getMatricula();
password = usu.getPassword();
ramal = usu.getRamal();
rg = usu.getRg();
telefone_1 = usu.getTelefone_1();
// id_cidade = usu.getCidade();
// id_funcao = usu.getFuncao();
verificarSenha(password, usu.getUsername());
}
}
} catch (Exception ex) {
FacesUtil.exibirMensagemErro(ex.getMessage());
}
return null;
}
esse metodo é o de logar no sistema.
Posta a classe toda, se possível os xmls de configuração também.
Coloca entre as tags code pra facilitar a leitura.
Vlw
alextr
Junho 27, 2013, 2:14pm
#8
EU não coloquei em tag de codigo para mostar em negrito ao estava a linha do codigo.
A classe inteira LoginBean:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.rpctv.managedBean;
import br.com.rpctv.entidade.AutorizacaoMenu;
import br.com.rpctv.entidade.Unidade;
import br.com.rpctv.entidade.Usuario;
import br.com.rpctv.entidade.UsuarioAutorizacao;
import br.com.rpctv.siseng.Facade.UsuarioFacade;
import br.com.rpctv.siseng.etc.FacesUtil;
import br.com.rpctv.siseng.etc.SessionCounterListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.IOException;
import java.io.Serializable;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import javax.mail.*;
import javax.mail.internet.*;
import org.apache.commons.mail.EmailException;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.primefaces.context.RequestContext;
import javax.activation.*;
import javax.annotation.PostConstruct;
import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;
import org.springframework.security.web.authentication.session.SessionAuthenticationException;
/**
*
* @author ricardo
*/
@ManagedBean(name = "login")
@SessionScoped
public final class LoginBean implements Serializable {
private HttpSession session;
private List<String> usuariosOn = new ArrayList<String>();
public Integer numeroUsuarioOn;
private SessionCounterListener sessionCounterListener;
private SessionAuthenticationException sessionAuthenticationException = null;
private Usuario usuario;
private Usuario usuarioSessao;
private String emailUsuario;
private String nome;
private String departamento;
private Date admissao;
private String bairro;
private String celular;
private String cpf;
private Date data_cadastro;
private String email_corp;
private String email_part;
private String endereco;
private Boolean escala;
private Boolean fechaOcorrencia;
private Boolean alocaOcorrencia;
private Boolean visuOcorrencia;
private Boolean cadastraEquipamento;
private String matricula;
private String password;
private Long ramal;
private String rg;
private String autorizacao;
private String telefone_1;
private String id_cidade;
private String id_funcao;
private Unidade unidade;
private List<AutorizacaoMenu> autorizacaoMenus;
private List<UsuarioAutorizacao> usuarioAutorizacoes;
//--KEYBOARD\\--
private String loginKeyBoard;
private String SenhaKeyBoard;
@EJB
private UsuarioFacade usuarioFacade;
private Boolean redefinirSenha;
private String mensagemMotivoRedefinirSenha;
private Boolean emailExistente = Boolean.FALSE;
private Boolean liberaMatricula = Boolean.FALSE;
private Boolean confereMatricula = Boolean.FALSE;
private String matriculaLembrete;
public LoginBean() {
}
@PostConstruct
public void init() {
//verificaUsuarioOn();
}
//KEYBOARD PLUBLICS\\
public void setloginKeyBoard(String loginKeyBoard) {
this.loginKeyBoard = loginKeyBoard;
}
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();
User user = null;
if (contextSpring instanceof SecurityContext) {
Authentication authentication = contextSpring.getAuthentication();
System.out.println("TESTE");
// NÃO PASSA NA VERIFICAÇÃO PORQUE:
//Authentication authentication = contextSpring.getAuthentication();
//ta retornando null tem que ver o porque
if (authentication instanceof Authentication) {
System.out.println("BOA");
user = (User) authentication.getPrincipal();
HttpSession session = (HttpSession) context.getSession(false);
session.setAttribute("usuarioLogado", usuarioFacade.consultaUsuario(user.getUsername()));
Usuario usu = (Usuario) session.getAttribute("usuarioLogado");
usuarioSessao = usu;
usuarioAutorizacoes = usu.getUsuarioAutorizacoes();
nome = usu.getNome();
admissao = usu.getAdmissao();
bairro = usu.getBairro();
celular = usu.getCelular();
cpf = usu.getCpf();
data_cadastro = usu.getData_cadastro();
email_corp = usu.getEmail_corp();
email_part = usu.getEmail_part();
endereco = usu.getEndereco();
// escala = usu.getEscala();
unidade = usu.getUnidade();
fechaOcorrencia = usu.getFechaOcorrencia();
visuOcorrencia = usu.getVisuOcorrencia();
alocaOcorrencia = usu.getAlocaOcorrencia();
cadastraEquipamento = usu.getCadastroEquipamento();
matricula = usu.getMatricula();
password = usu.getPassword();
ramal = usu.getRamal();
rg = usu.getRg();
telefone_1 = usu.getTelefone_1();
// id_cidade = usu.getCidade();
// id_funcao = usu.getFuncao();
verificarSenha(password, usu.getUsername());
}
}
} catch (Exception ex) {
FacesUtil.exibirMensagemErro(ex.getMessage());
}
return null;
}
public String getLoginKeyBoard() {
return loginKeyBoard;
}
public void setLoginKeyBoard(String loginKeyBoard) {
this.loginKeyBoard = loginKeyBoard;
}
public String getSenhaKeyBoard() {
return SenhaKeyBoard;
}
public void setSenhaKeyBoard(String SenhaKeyBoard) {
this.SenhaKeyBoard = SenhaKeyBoard;
}
public String getDepartamento() {
return departamento;
}
public void setDepartamento(String departamento) {
this.departamento = departamento;
}
public Boolean getCadastraEquipamento() {
return cadastraEquipamento;
}
public void setCadastraEquipamento(Boolean cadastraEquipamento) {
this.cadastraEquipamento = cadastraEquipamento;
}
public Boolean getVisuOcorrencia() {
return visuOcorrencia;
}
public void setVisuOcorrencia(Boolean visuOcorrencia) {
this.visuOcorrencia = visuOcorrencia;
}
public Boolean getAlocaOcorrencia() {
return alocaOcorrencia;
}
public void setAlocaOcorrencia(Boolean alocaOcorrencia) {
this.alocaOcorrencia = alocaOcorrencia;
}
public Date getData() {
Date data = new Date();
Locale locale = Locale.getDefault(); //Pega as configuracoes regionais do Sistema Operacional.
DateFormat dt = DateFormat.getDateInstance(DateFormat.DEFAULT);
return data;
}
public SessionAuthenticationException getSessionAuthenticationException() {
return sessionAuthenticationException;
}
public void setSessionAuthenticationException(SessionAuthenticationException sessionAuthenticationException) {
this.sessionAuthenticationException = sessionAuthenticationException;
}
public void atualizar() {
RequestContext context = RequestContext.getCurrentInstance();
context.update("@all");
}
public String getIp() {
FacesContext fc = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) fc.getExternalContext().getRequest();
String ip = request.getRemoteAddr();
return ip;
}
public void fechaPainel() {
redefinirSenha = Boolean.FALSE;
}
public Boolean getFechaOcorrencia() {
return fechaOcorrencia;
}
public void setFechaOcorrencia(Boolean fechaOcorrencia) {
this.fechaOcorrencia = fechaOcorrencia;
}
public void usuarioLogado() {
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public String getEmailUsuario() {
return emailUsuario;
}
public void setEmailUsuario(String emailUsuario) {
this.emailUsuario = emailUsuario;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public HttpSession getSession() {
return session;
}
public void setSession(HttpSession session) {
this.session = session;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getEmail_corp() {
return email_corp;
}
public void setEmail_corp(String email_corp) {
this.email_corp = email_corp;
}
public String getEmail_part() {
return email_part;
}
public void setEmail_part(String email_part) {
this.email_part = email_part;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Long getRamal() {
return ramal;
}
public void setRamal(Long ramal) {
this.ramal = ramal;
}
public String getRg() {
return rg;
}
public void setRg(String rg) {
this.rg = rg;
}
public String getTelefone_1() {
return telefone_1;
}
public void setTelefone_1(String telefone_1) {
this.telefone_1 = telefone_1;
}
public UsuarioFacade getUsuarioFacade() {
return usuarioFacade;
}
public void setUsuarioFacade(UsuarioFacade usuarioFacade) {
this.usuarioFacade = usuarioFacade;
}
public Date getAdmissao() {
return admissao;
}
public void setAdmissao(Date admissao) {
this.admissao = admissao;
}
public String getCelular() {
return celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
public Date getData_cadastro() {
return data_cadastro;
}
public void setData_cadastro(Date data_cadastro) {
this.data_cadastro = data_cadastro;
}
public Boolean getEscala() {
return escala;
}
public void setEscala(Boolean escala) {
this.escala = escala;
}
public String getId_cidade() {
return id_cidade;
}
public void setId_cidade(String id_cidade) {
this.id_cidade = id_cidade;
}
public String getId_funcao() {
return id_funcao;
}
public void setId_funcao(String id_funcao) {
this.id_funcao = id_funcao;
}
public String getMatricula() {
return matricula;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public String getAutorizacao() {
return autorizacao;
}
public void setAutorizacao(String autorizacao) {
this.autorizacao = autorizacao;
}
public Unidade getUnidade() {
return unidade;
}
public void setUnidade(Unidade unidade) {
this.unidade = unidade;
}
public Usuario getUsuarioSessao() {
return usuarioSessao;
}
public void setUsuarioSessao(Usuario usuarioSessao) {
this.usuarioSessao = usuarioSessao;
}
public String getMensagemMotivoRedefinirSenha() {
return mensagemMotivoRedefinirSenha;
}
public void setMensagemMotivoRedefinirSenha(String mensagemMotivoRedefinirSenha) {
this.mensagemMotivoRedefinirSenha = mensagemMotivoRedefinirSenha;
}
public Boolean getRedefinirSenha() {
return redefinirSenha;
}
public void setRedefinirSenha(Boolean redefinirSenha) {
this.redefinirSenha = redefinirSenha;
}
public Boolean getEmailExistente() {
return emailExistente;
}
public void setEmailExistente(Boolean emailExistente) {
this.emailExistente = emailExistente;
}
public Boolean getLiberaMatricula() {
return liberaMatricula;
}
public void setLiberaMatricula(Boolean liberaMatricula) {
this.liberaMatricula = liberaMatricula;
}
public String getMatriculaLembrete() {
return matriculaLembrete;
}
public void setMatriculaLembrete(String matriculaLembrete) {
this.matriculaLembrete = matriculaLembrete;
}
public Boolean getConfereMatricula() {
return confereMatricula;
}
public void setConfereMatricula(Boolean confereMatricula) {
this.confereMatricula = confereMatricula;
}
public void verificarSenha(String password, String username) {
if (password.equals("grpcom")) {
redefinirSenha = Boolean.TRUE;
mensagemMotivoRedefinirSenha = "";
mensagemMotivoRedefinirSenha = "Sua senha não pode ser GRPCOM";
} else if (password.equals("1234") || password.equals("123456") || password.equals("123467890") || password.contains("12345") || password.contains("111") || password.contains("222") || password.contains("321")) {
redefinirSenha = Boolean.TRUE;
mensagemMotivoRedefinirSenha = "";
mensagemMotivoRedefinirSenha = "Sua senha é muito fácil";
} else if (password.equals(username)) {
redefinirSenha = Boolean.TRUE;
mensagemMotivoRedefinirSenha = "";
mensagemMotivoRedefinirSenha = "Sua senha não pode ser igual o login!";
} else {
redefinirSenha = Boolean.FALSE;
}
}
public void verificaEmail(AjaxBehaviorEvent event) {
usuario = usuarioFacade.consultaUsuarioEmail(emailUsuario);
try {
if (emailUsuario.equals(usuario.getEmail_corp())) {
emailExistente = Boolean.TRUE;
liberaMatricula = Boolean.TRUE;
} else {
emailExistente = Boolean.FALSE;
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR!", "Email não cadastrado no sistema");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
} catch (Exception e) {
emailExistente = Boolean.FALSE;
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR!", "Email não cadastrado no sistema");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
public void verificaMatricula(AjaxBehaviorEvent event) {
System.out.println("-----" + usuario.getMatricula());
try {
if (matriculaLembrete.equals(usuario.getMatricula())) {
confereMatricula = Boolean.TRUE;
} else {
confereMatricula = Boolean.FALSE;
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR!", "Essa matricula não existe ou não é pertencente a este email");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
} catch (Exception e) {
confereMatricula = Boolean.FALSE;
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR!", "Essa matricula não existe ou não é pertencente a este email");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
public void lembreteSenha(ActionEvent event) throws Exception {
usuario = usuarioFacade.consultaUsuarioEmail(emailUsuario);
usuario.setPassword("grpcom");
usuarioFacade.salvar(usuario);
}
public void logout() throws IOException {
// usuariosOn.remove(usuarioSessao);
SecurityContextHolder.getContext().setAuthentication(null);
FacesContext.getCurrentInstance().getExternalContext().redirect("login.xhtml");
}
public void getEncerraSessao() {
System.out.println("----ENTREI NO METODO ----");
// ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
// Exception exception = (Exception) context.getSessionMap().get(WebAttributes.AUTHENTICATION_EXCEPTION);
//
// context.getSessionMap().put(WebAttributes.AUTHENTICATION_EXCEPTION, null);
// if (exception instanceof SessionAuthenticationException) {
// System.out.println("----AQUI -----");
//// event.getSession().invalidate();
// session.invalidate();
// }
}
// public void verificaUsuarioOn() {
// for (String usu : SessionCounterListener.getUsuarios()) {
// usuario = usuarioFacade.consultaUsuario(usu);
// if (!usuariosOn.contains(usuario)) {
// usuariosOn.add(usuario);
// }
// }
// }
public Integer getNumeroUsuarioOn() {
numeroUsuarioOn = SessionCounterListener.getTotalActiveSessions();
return numeroUsuarioOn;
}
public void setNumeroUsuarioOn(Integer numeroUsuarioOn) {
this.numeroUsuarioOn = numeroUsuarioOn;
}
public List<String> getUsuariosOn() {
usuariosOn = SessionCounterListener.getUsuarios();
return usuariosOn;
}
public void setUsuariosOn(List<String> usuariosOn) {
this.usuariosOn = usuariosOn;
}
public List<AutorizacaoMenu> getAutorizacaoMenus() {
return autorizacaoMenus;
}
public void setAutorizacaoMenus(List<AutorizacaoMenu> autorizacaoMenus) {
this.autorizacaoMenus = autorizacaoMenus;
}
public List<UsuarioAutorizacao> getUsuarioAutorizacoes() {
return usuarioAutorizacoes;
}
public void setUsuarioAutorizacoes(List<UsuarioAutorizacao> usuarioAutorizacoes) {
this.usuarioAutorizacoes = usuarioAutorizacoes;
}
}
Posta o web.xml e o arquivo de configuração do Security também.
alextr
Junho 27, 2013, 2:36pm
#10
WEB:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- indica que o projeto esta em producao-->
<display-name>/touch</display-name>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Production</param-value>
</context-param>
<!-- configuracao do faces servlet-->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!--padrao da url que o faces servlet ira trabalhar-->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<!--tempo de sessao -->
<session-config>
<session-timeout>10</session-timeout>
</session-config>
<!--Pagina inicial -->
<welcome-file-list>
<welcome-file>/view/index.xhtml</welcome-file>
</welcome-file-list>
<!-- Configurações para o Spring Security 3-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<persistence-context-ref>
<persistence-context-ref-name>SISENG2PU</persistence-context-ref-name>
<persistence-unit-name>SISENG2PU</persistence-unit-name>
</persistence-context-ref>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<listener>
<listener-class>
org.springframework.security.web.session.HttpSessionEventPublisher
</listener-class>
</listener>
<!-- FIM DO SPRING -->
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/erros/Erro403</location>
</error-page>
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>Resource Servlet</servlet-name>
<servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Resource Servlet</servlet-name>
<url-pattern>/primefaces_resource/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FULL_STATE_SAVING_VIEW_IDS</param-name>
<param-value>/index.xhtml</param-value>
</context-param>
<servlet>
<servlet-name>Push Servlet</servlet-name>
<servlet-class>org.primefaces.push.PushServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Push Servlet</servlet-name>
<url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
</web-app>
onde posso ver a configuração do spring security?
Creio que seja o application context:
<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:b="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<http auto-config="true" access-denied-page="/negado.xhtml" use-expressions="true">
<intercept-url pattern="/view/**" access="hasAnyRole('ROLE_ADMIN','ROLE_TECNICO','ROLE_USER','ROLE_OPEC','ROLE_OPERADOR','ROLE_USUARIO','ROLE_JORNALISMO', 'ROLE_PROGRAMACAO', 'ROLE_OPECCORD', 'ROLE_ADMINISTRACAO','ROLE_ROTEIRO' )"/>
<form-login login-page="/login.xhtml" authentication-failure-url="/login.xhtml?erro=true"/>
<session-management>
<concurrency-control max-sessions="2" error-if-maximum-exceeded="true" />
</session-management>
</http>
<authentication-manager>
<authentication-provider>
<password-encoder hash="md5"/>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT username, password, enable FROM usuario WHERE username=?"
authorities-by-username-query="SELECT username as username, nome as authority FROM usuarioautorizacao WHERE username=?"
/>
</authentication-provider>
</authentication-manager>
<b:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<b:property name="url" value="jdbc:oracle:thin:@xxxxxxxxxxx:XE"/>
<b:property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
<b:property name="username" value="xxxxxx" />
<b:property name="password" value="xxxxxxxxxxx" />
</b:bean>
</b:beans>
alextr
Junho 27, 2013, 4:33pm
#11
Então fiz um if:
if(authentication==null){
System.out.println("Usuario nulo");
}
e realmente o authentication esta recebendo nulo.
E então eu apurei o erro e é esse erro que esta mostrando:
java.awt.HeadlessException
o que significa?
alextr
Junho 28, 2013, 8:12am
#12
Cara é estranho porque esse código é sistema JSF e funciona, e agora estou pegando esse código e colocando ele para JSF mobile tem problema com isso? nçao deveria funcionar?
alextr
Junho 28, 2013, 8:59am
#13
Minha depurações são essas:
INFO: DISPATCHER org.apache.catalina.core.ApplicationDispatcher@1e7d3f55
INFO: CONTEXT org.springframework.security.core.context.SecurityContextImpl@ffffffff: Null authentication
INFO: contextSpringnull
INFO: ERRO java.lang.NullPointerException
INFO: RETURN NULL
alextr
Julho 2, 2013, 1:13pm
#14
To achando que pode ser o filtro em mais nao sei o que pode estar errado, não sei porque talvez não esteja recebendo.
<authentication-manager>
<authentication-provider>
<password-encoder hash="md5"/>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT username, password, enable FROM usuario WHERE username=?"
authorities-by-username-query="SELECT username as username, nome as authority FROM usuarioautorizacao WHERE username=?"
/>
</authentication-provider>
</authentication-manager>
Faz um teste e verifica se o seu bean dataSource não está vindo null.
Verifica as colunas username, password e enable existem na tabela usuario.
Verifica se existem as colunas na tabela usuarioautorizacao.
alextr
Julho 2, 2013, 2:51pm
#16
Então cara, os codigos desse é o mesmo codigo do outro sistemas, com algumas diferenças, mas o beans e os manager beans continuam os mesmo, e o application context tambem (datasourse) e la no outro sistema funciona perfeitamento, só adaptei algumas coisas para modo mobile do primefaces.
E não entendo porque mue contexSpring.getAuthentication() recebe null, sendo que na outra aplicação esta funcionando normal.
Tenta configurar o mapeamento do filter do security pra pegar ERROR também.
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
alextr
Julho 2, 2013, 3:38pm
#18
A mesma coisa não mudou nada.
alextr
Julho 4, 2013, 1:52pm
#19
será que na versão mobile do primefaces o spring security não funciona?
alextr
Julho 4, 2013, 4:40pm
#20
o Meu:
SecurityContextHolder.getContext();
está retornando nulo.