Como pegar o id do usuario logado no spring security 3?

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>

Olá. Seu select não está retornando o id… só o nome e a autorizacao…

Object usuarioLogado = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); String username; if (usuarioLogado instanceof UserDetails ) { username= ( (UserDetails)usuarioLogado).getUsername(); } else { username = usuarioLogado .toString(); }

Obrigada pela resposta rápida

nico2003, mesmo adicionando o id no select nao tem um retorno

fnotti, da forma que vc me passou tbm nao retorna o id

ele imprime os seguintes valores:

aorg.springframework.security.core.userdetails.User@2fa34b:
Username: priscila;
Password: [PROTECTED];
Enabled: true;
AccountNonExpired: true;
credentialsNonExpired: true;
AccountNonLocked: true;
Granted Authorities: ROLE_ADMIN

:?

VOcê conseguiu pegar o ID do usuario logado? Por favor me ajude.

Você consegue pegar o nome do login do usuário, certo ? Esse login é único no sistema, certo ? Daí é só fazer o select na tabela de usuários filtrando o login.