Bom, eu tenho um método que de login chamado logar, nele possui um if:
if(authenticationinstanceofAuthentication){
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.
o método contextSpring.getAuthentication(); pode estar retornando null fazendo
com que a referência authentication não passe no teste instanceof.
A
alextr
Opa, muito obrigado pela sua resposta mais não tenho ideia de como arrumaria isso, como arrumo poderia me dar uma luz?
A
alextr
Não entenod o porque, será que o spring esta enviando dados para bean?
N
natanaelv
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
A
alextr
O SecurityContext contextSpring = SecurityContextHolder.getContext(); esta logo no codigo abaixo:
// NÃO PASSA NA VERIFICAÇÃO PORQUE://Authentication authentication = contextSpring.getAuthentication();//ta retornando null tem que ver o porqueif(authenticationinstanceofAuthentication){System.out.println("BOA");user=(User)authentication.getPrincipal();HttpSessionsession=(HttpSession)context.getSession(false);session.setAttribute("usuarioLogado",usuarioFacade.consultaUsuario(user.getUsername()));Usuariousu=(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();
Posta a classe toda, se possível os xmls de configuração também.
Coloca entre as tags code pra facilitar a leitura.
Vlw
A
alextr
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. */packagebr.com.rpctv.managedBean;importbr.com.rpctv.entidade.AutorizacaoMenu;importbr.com.rpctv.entidade.Unidade;importbr.com.rpctv.entidade.Usuario;importbr.com.rpctv.entidade.UsuarioAutorizacao;importbr.com.rpctv.siseng.Facade.UsuarioFacade;importbr.com.rpctv.siseng.etc.FacesUtil;importbr.com.rpctv.siseng.etc.SessionCounterListener;importjava.util.logging.Level;importjava.util.logging.Logger;importjava.io.IOException;importjava.io.Serializable;importjava.text.DateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importjava.util.Locale;importjavax.mail.*;importjavax.mail.internet.*;importorg.apache.commons.mail.EmailException;importjavax.ejb.EJB;importjavax.faces.application.FacesMessage;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.SessionScoped;importjavax.faces.context.ExternalContext;importjavax.faces.context.FacesContext;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importorg.springframework.security.core.Authentication;importorg.springframework.security.core.context.SecurityContext;importorg.springframework.security.core.context.SecurityContextHolder;importorg.springframework.security.core.userdetails.User;importorg.primefaces.context.RequestContext;importjavax.activation.*;importjavax.annotation.PostConstruct;importjavax.faces.event.ActionEvent;importjavax.faces.event.AjaxBehaviorEvent;importorg.springframework.security.web.authentication.session.SessionAuthenticationException;/** * * @author ricardo */@ManagedBean(name="login")@SessionScopedpublicfinalclassLoginBeanimplementsSerializable{privateHttpSessionsession;privateList<String>usuariosOn=newArrayList<String>();publicIntegernumeroUsuarioOn;privateSessionCounterListenersessionCounterListener;privateSessionAuthenticationExceptionsessionAuthenticationException=null;privateUsuariousuario;privateUsuariousuarioSessao;privateStringemailUsuario;privateStringnome;privateStringdepartamento;privateDateadmissao;privateStringbairro;privateStringcelular;privateStringcpf;privateDatedata_cadastro;privateStringemail_corp;privateStringemail_part;privateStringendereco;privateBooleanescala;privateBooleanfechaOcorrencia;privateBooleanalocaOcorrencia;privateBooleanvisuOcorrencia;privateBooleancadastraEquipamento;privateStringmatricula;privateStringpassword;privateLongramal;privateStringrg;privateStringautorizacao;privateStringtelefone_1;privateStringid_cidade;privateStringid_funcao;privateUnidadeunidade;privateList<AutorizacaoMenu>autorizacaoMenus;privateList<UsuarioAutorizacao>usuarioAutorizacoes;//--KEYBOARD\\--privateStringloginKeyBoard;privateStringSenhaKeyBoard;@EJBprivateUsuarioFacadeusuarioFacade;privateBooleanredefinirSenha;privateStringmensagemMotivoRedefinirSenha;privateBooleanemailExistente=Boolean.FALSE;privateBooleanliberaMatricula=Boolean.FALSE;privateBooleanconfereMatricula=Boolean.FALSE;privateStringmatriculaLembrete;publicLoginBean(){}@PostConstructpublicvoidinit(){//verificaUsuarioOn();}//KEYBOARD PLUBLICS\\publicvoidsetloginKeyBoard(StringloginKeyBoard){this.loginKeyBoard=loginKeyBoard;}publicStringlogar()throwsServletException,IOException{try{ExternalContextcontext=FacesContext.getCurrentInstance().getExternalContext();RequestDispatcherdispatcher=((HttpServletRequest)context.getRequest()).getRequestDispatcher("/j_spring_security_check");dispatcher.forward((HttpServletRequest)context.getRequest(),(HttpServletResponse)context.getResponse());FacesContext.getCurrentInstance().responseComplete();SecurityContextcontextSpring=SecurityContextHolder.getContext();Useruser=null;if(contextSpringinstanceofSecurityContext){Authenticationauthentication=contextSpring.getAuthentication();System.out.println("TESTE");// NÃO PASSA NA VERIFICAÇÃO PORQUE://Authentication authentication = contextSpring.getAuthentication();//ta retornando null tem que ver o porqueif(authenticationinstanceofAuthentication){System.out.println("BOA");user=(User)authentication.getPrincipal();HttpSessionsession=(HttpSession)context.getSession(false);session.setAttribute("usuarioLogado",usuarioFacade.consultaUsuario(user.getUsername()));Usuariousu=(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(Exceptionex){FacesUtil.exibirMensagemErro(ex.getMessage());}returnnull;}publicStringgetLoginKeyBoard(){returnloginKeyBoard;}publicvoidsetLoginKeyBoard(StringloginKeyBoard){this.loginKeyBoard=loginKeyBoard;}publicStringgetSenhaKeyBoard(){returnSenhaKeyBoard;}publicvoidsetSenhaKeyBoard(StringSenhaKeyBoard){this.SenhaKeyBoard=SenhaKeyBoard;}publicStringgetDepartamento(){returndepartamento;}publicvoidsetDepartamento(Stringdepartamento){this.departamento=departamento;}publicBooleangetCadastraEquipamento(){returncadastraEquipamento;}publicvoidsetCadastraEquipamento(BooleancadastraEquipamento){this.cadastraEquipamento=cadastraEquipamento;}publicBooleangetVisuOcorrencia(){returnvisuOcorrencia;}publicvoidsetVisuOcorrencia(BooleanvisuOcorrencia){this.visuOcorrencia=visuOcorrencia;}publicBooleangetAlocaOcorrencia(){returnalocaOcorrencia;}publicvoidsetAlocaOcorrencia(BooleanalocaOcorrencia){this.alocaOcorrencia=alocaOcorrencia;}publicDategetData(){Datedata=newDate();Localelocale=Locale.getDefault();//Pega as configuracoes regionais do Sistema Operacional.DateFormatdt=DateFormat.getDateInstance(DateFormat.DEFAULT);returndata;}publicSessionAuthenticationExceptiongetSessionAuthenticationException(){returnsessionAuthenticationException;}publicvoidsetSessionAuthenticationException(SessionAuthenticationExceptionsessionAuthenticationException){this.sessionAuthenticationException=sessionAuthenticationException;}publicvoidatualizar(){RequestContextcontext=RequestContext.getCurrentInstance();context.update("@all");}publicStringgetIp(){FacesContextfc=FacesContext.getCurrentInstance();HttpServletRequestrequest=(HttpServletRequest)fc.getExternalContext().getRequest();Stringip=request.getRemoteAddr();returnip;}publicvoidfechaPainel(){redefinirSenha=Boolean.FALSE;}publicBooleangetFechaOcorrencia(){returnfechaOcorrencia;}publicvoidsetFechaOcorrencia(BooleanfechaOcorrencia){this.fechaOcorrencia=fechaOcorrencia;}publicvoidusuarioLogado(){}publicUsuariogetUsuario(){returnusuario;}publicvoidsetUsuario(Usuariousuario){this.usuario=usuario;}publicStringgetEmailUsuario(){returnemailUsuario;}publicvoidsetEmailUsuario(StringemailUsuario){this.emailUsuario=emailUsuario;}publicStringgetBairro(){returnbairro;}publicvoidsetBairro(Stringbairro){this.bairro=bairro;}publicHttpSessiongetSession(){returnsession;}publicvoidsetSession(HttpSessionsession){this.session=session;}publicStringgetCpf(){returncpf;}publicvoidsetCpf(Stringcpf){this.cpf=cpf;}publicStringgetEmail_corp(){returnemail_corp;}publicvoidsetEmail_corp(Stringemail_corp){this.email_corp=email_corp;}publicStringgetEmail_part(){returnemail_part;}publicvoidsetEmail_part(Stringemail_part){this.email_part=email_part;}publicStringgetEndereco(){returnendereco;}publicvoidsetEndereco(Stringendereco){this.endereco=endereco;}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicLonggetRamal(){returnramal;}publicvoidsetRamal(Longramal){this.ramal=ramal;}publicStringgetRg(){returnrg;}publicvoidsetRg(Stringrg){this.rg=rg;}publicStringgetTelefone_1(){returntelefone_1;}publicvoidsetTelefone_1(Stringtelefone_1){this.telefone_1=telefone_1;}publicUsuarioFacadegetUsuarioFacade(){returnusuarioFacade;}publicvoidsetUsuarioFacade(UsuarioFacadeusuarioFacade){this.usuarioFacade=usuarioFacade;}publicDategetAdmissao(){returnadmissao;}publicvoidsetAdmissao(Dateadmissao){this.admissao=admissao;}publicStringgetCelular(){returncelular;}publicvoidsetCelular(Stringcelular){this.celular=celular;}publicDategetData_cadastro(){returndata_cadastro;}publicvoidsetData_cadastro(Datedata_cadastro){this.data_cadastro=data_cadastro;}publicBooleangetEscala(){returnescala;}publicvoidsetEscala(Booleanescala){this.escala=escala;}publicStringgetId_cidade(){returnid_cidade;}publicvoidsetId_cidade(Stringid_cidade){this.id_cidade=id_cidade;}publicStringgetId_funcao(){returnid_funcao;}publicvoidsetId_funcao(Stringid_funcao){this.id_funcao=id_funcao;}publicStringgetMatricula(){returnmatricula;}publicvoidsetMatricula(Stringmatricula){this.matricula=matricula;}publicStringgetAutorizacao(){returnautorizacao;}publicvoidsetAutorizacao(Stringautorizacao){this.autorizacao=autorizacao;}publicUnidadegetUnidade(){returnunidade;}publicvoidsetUnidade(Unidadeunidade){this.unidade=unidade;}publicUsuariogetUsuarioSessao(){returnusuarioSessao;}publicvoidsetUsuarioSessao(UsuariousuarioSessao){this.usuarioSessao=usuarioSessao;}publicStringgetMensagemMotivoRedefinirSenha(){returnmensagemMotivoRedefinirSenha;}publicvoidsetMensagemMotivoRedefinirSenha(StringmensagemMotivoRedefinirSenha){this.mensagemMotivoRedefinirSenha=mensagemMotivoRedefinirSenha;}publicBooleangetRedefinirSenha(){returnredefinirSenha;}publicvoidsetRedefinirSenha(BooleanredefinirSenha){this.redefinirSenha=redefinirSenha;}publicBooleangetEmailExistente(){returnemailExistente;}publicvoidsetEmailExistente(BooleanemailExistente){this.emailExistente=emailExistente;}publicBooleangetLiberaMatricula(){returnliberaMatricula;}publicvoidsetLiberaMatricula(BooleanliberaMatricula){this.liberaMatricula=liberaMatricula;}publicStringgetMatriculaLembrete(){returnmatriculaLembrete;}publicvoidsetMatriculaLembrete(StringmatriculaLembrete){this.matriculaLembrete=matriculaLembrete;}publicBooleangetConfereMatricula(){returnconfereMatricula;}publicvoidsetConfereMatricula(BooleanconfereMatricula){this.confereMatricula=confereMatricula;}publicvoidverificarSenha(Stringpassword,Stringusername){if(password.equals("grpcom")){redefinirSenha=Boolean.TRUE;mensagemMotivoRedefinirSenha="";mensagemMotivoRedefinirSenha="Sua senha não pode ser GRPCOM";}elseif(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";}elseif(password.equals(username)){redefinirSenha=Boolean.TRUE;mensagemMotivoRedefinirSenha="";mensagemMotivoRedefinirSenha="Sua senha não pode ser igual o login!";}else{redefinirSenha=Boolean.FALSE;}}publicvoidverificaEmail(AjaxBehaviorEventevent){usuario=usuarioFacade.consultaUsuarioEmail(emailUsuario);try{if(emailUsuario.equals(usuario.getEmail_corp())){emailExistente=Boolean.TRUE;liberaMatricula=Boolean.TRUE;}else{emailExistente=Boolean.FALSE;FacesMessagemsg=newFacesMessage(FacesMessage.SEVERITY_ERROR,"ERROR!","Email não cadastrado no sistema");FacesContext.getCurrentInstance().addMessage(null,msg);}}catch(Exceptione){emailExistente=Boolean.FALSE;FacesMessagemsg=newFacesMessage(FacesMessage.SEVERITY_ERROR,"ERROR!","Email não cadastrado no sistema");FacesContext.getCurrentInstance().addMessage(null,msg);}}publicvoidverificaMatricula(AjaxBehaviorEventevent){System.out.println("-----"+usuario.getMatricula());try{if(matriculaLembrete.equals(usuario.getMatricula())){confereMatricula=Boolean.TRUE;}else{confereMatricula=Boolean.FALSE;FacesMessagemsg=newFacesMessage(FacesMessage.SEVERITY_ERROR,"ERROR!","Essa matricula não existe ou não é pertencente a este email");FacesContext.getCurrentInstance().addMessage(null,msg);}}catch(Exceptione){confereMatricula=Boolean.FALSE;FacesMessagemsg=newFacesMessage(FacesMessage.SEVERITY_ERROR,"ERROR!","Essa matricula não existe ou não é pertencente a este email");FacesContext.getCurrentInstance().addMessage(null,msg);}}publicvoidlembreteSenha(ActionEventevent)throwsException{usuario=usuarioFacade.consultaUsuarioEmail(emailUsuario);usuario.setPassword("grpcom");usuarioFacade.salvar(usuario);}publicvoidlogout()throwsIOException{// usuariosOn.remove(usuarioSessao);SecurityContextHolder.getContext().setAuthentication(null);FacesContext.getCurrentInstance().getExternalContext().redirect("login.xhtml");}publicvoidgetEncerraSessao(){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);// }// }// }publicIntegergetNumeroUsuarioOn(){numeroUsuarioOn=SessionCounterListener.getTotalActiveSessions();returnnumeroUsuarioOn;}publicvoidsetNumeroUsuarioOn(IntegernumeroUsuarioOn){this.numeroUsuarioOn=numeroUsuarioOn;}publicList<String>getUsuariosOn(){usuariosOn=SessionCounterListener.getUsuarios();returnusuariosOn;}publicvoidsetUsuariosOn(List<String>usuariosOn){this.usuariosOn=usuariosOn;}publicList<AutorizacaoMenu>getAutorizacaoMenus(){returnautorizacaoMenus;}publicvoidsetAutorizacaoMenus(List<AutorizacaoMenu>autorizacaoMenus){this.autorizacaoMenus=autorizacaoMenus;}publicList<UsuarioAutorizacao>getUsuarioAutorizacoes(){returnusuarioAutorizacoes;}publicvoidsetUsuarioAutorizacoes(List<UsuarioAutorizacao>usuarioAutorizacoes){this.usuarioAutorizacoes=usuarioAutorizacoes;}}
N
natanaelv
Posta o web.xml e o arquivo de configuração do Security também.
A
alextr
WEB:
<?xml version="1.0" encoding="UTF-8"?><web-appversion="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>FacesServlet</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>FacesServlet</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>PrimeFacesFileUploadFilter</filter-name><filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class></filter><filter-mapping><filter-name>PrimeFacesFileUploadFilter</filter-name><servlet-name>FacesServlet</servlet-name></filter-mapping><servlet><servlet-name>ResourceServlet</servlet-name><servlet-class>org.primefaces.resource.ResourceServlet</servlet-class></servlet><servlet-mapping><servlet-name>ResourceServlet</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>PushServlet</servlet-name><servlet-class>org.primefaces.push.PushServlet</servlet-class></servlet><servlet-mapping><servlet-name>PushServlet</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:beansxmlns="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"><httpauto-config="true"access-denied-page="/negado.xhtml"use-expressions="true"><intercept-urlpattern="/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-loginlogin-page="/login.xhtml"authentication-failure-url="/login.xhtml?erro=true"/><session-management><concurrency-controlmax-sessions="2"error-if-maximum-exceeded="true"/></session-management></http><authentication-manager><authentication-provider><password-encoderhash="md5"/><jdbc-user-servicedata-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:beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><b:propertyname="url"value="jdbc:oracle:thin:@xxxxxxxxxxx:XE"/><b:propertyname="driverClassName"value="oracle.jdbc.OracleDriver"/><b:propertyname="username"value="xxxxxx"/><b:propertyname="password"value="xxxxxxxxxxx"/></b:bean></b:beans>
E então eu apurei o erro e é esse erro que esta mostrando:
java.awt.HeadlessException
o que significa?
A
alextr
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?
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-encoderhash="md5"/><jdbc-user-servicedata-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>
N
natanaelv
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.
A
alextr
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.
N
natanaelv
Tenta configurar o mapeamento do filter do security pra pegar ERROR também.
publicStringlogar()throwsServletException,IOException{try{ExternalContextcontext=FacesContext.getCurrentInstance().getExternalContext();RequestDispatcherdispatcher=((HttpServletRequest)context.getRequest()).getRequestDispatcher("/j_spring_security_check");dispatcher.forward((HttpServletRequest)context.getRequest(),(HttpServletResponse)context.getResponse());FacesContext.getCurrentInstance().responseComplete();//SecurityContextcontextSpring=SecurityContextHolder.getContext();SecurityContextcontextSpring=(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("AUTHENTICATION:"+authentication); if (authentication instanceof Authentication) { 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(Exceptionex){FacesUtil.exibirMensagemErro(ex.getMessage());}returnnull;}
A
alextr
V
A
alextr
Não sei se pode ser isso, mais o código do método logar() funciona perfeitamente na outra aplicação que tenho, a diferença é que nessa aplicação estou usando a versão Mobile do primefaces junto com JSF, e não tenho certeza se o spring security funciona na versão mobile do primefaces.
Será que esse problema do SecurityContextHolder.getContext(); de vir nulo pode ser por conta da versão mobile do primefaces?
agora só falta pegar o usuario, você poderia me ajudar a resolver mais esse problema?
A
alextr
O problema Foi resolvido obrigado.
A
alextr
Depurei mais se eu tirar o FORWARD o usuario vem com o problema descrito acima, o usuario vem como: anonymousUser e suas permissões também em como ROLE_anonymous, alguma outra solução?