Ola, estou com problema para pegar o id do usuario logado
ja pesquisei, mas o que encontrei nao deu certo =/
segue a abaixo a classe que deve pegar o id do usuario
package manager;
import java.io.Serializable;
//import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.inject.Named;
import org.springframework.security.authentication.AuthenticationServiceException;
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 entidade.Usuario;
@Named
@SessionScoped
public class TesteManager implements Serializable {
private Usuario usuario;
public TesteManager() {
usuario = new Usuario();
SecurityContext context = SecurityContextHolder.getContext();
if (context instanceof SecurityContext){
Authentication authentication = context.getAuthentication();
if (authentication instanceof Authentication){
usuario.setNome(((User)authentication.getPrincipal()).getUsername()); // ate consigo pegar o username, mas o id nao consigo =S
//usuario = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); // tentei dessa forma mas nao deu certo
}
}
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
}
applicationContext.xml
<bean id="agendaweb" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/agendaweb</value>
</property>
</bean>
<sec:http auto-config="true">
<sec:intercept-url pattern="/paginas/**" access="ROLE_ADMIN" />
<sec:form-login login-page="/login.jsf" authentication-failure-url="/login.jsf?erro=true"/>
<sec:logout invalidate-session="true" logout-success-url="/login.jsf" logout-url="/logout"/>
</sec:http>
<sec:authentication-manager alias="authenticationManager">
<sec:authentication-provider>
<sec:jdbc-user-service data-source-ref="agendaweb"
users-by-username-query="SELECT nome as username, senha as password, 'true' as enable FROM usuario WHERE nome=?"
authorities-by-username-query="SELECT nome as username, autorizacao as authority from usuario WHERE nome=?"
/>
</sec:authentication-provider>
</sec:authentication-manager>