Spring Security Mostrar o nome do usuário

Prezados boa noite, estou dando continuidade em um projeto web e implementei nele o spring security, esta funcionando, mais minha tabela de usuarios é diferente das encontradas
em tutoriais sobre o security, mais tudo ok, como disse tá funcionando mais, gostaria de mostrar o nome do usuario logado e não o seu login ( encontrei também algumas pessoas querendo a mesma coisa em alguns artigos )

No meu modelo implementei a classe UserDetails, inicialmente isto não estava sendo necessario mais achei que para o meu intento precisaria fazer isto
mais agora minha aplicacao da o erro org.springframework.security.core.userdetails.User cannot be cast to br.com.dominio.modelo.Usuario

Entendi o erro, mais achei que por estar implementando UserDetails isto não deveria ocorrer.

Entendi também que na implementação da classe UserDetailsService o metodo loadUserByUsername retorna um objeto do tipo user ( so Spring ) e talvez por isto
eu não consiga fazer o contrario??? continuo achando que por estar implementando userdetails isto não deveria ocorrer.

Abaixo coloquei alguns códigos quem puder me dar uma dica agradeço …

[code]
public class Usuario implements Serializable, UserDetails {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="usr_codigo")
private Integer usrCodigo;

@Column(name="usr_administrador")
private String usrAdministrador;

@Column(name="usr_ativo")
private Boolean usrAtivo;

@Column(name="usr_dias_expiracao")
private Integer usrDiasExpiracao;

@Column(name="usr_email")
private String usrEmail;

@Column(name="usr_foto")
private byte[] usrFoto;

@Temporal( TemporalType.TIMESTAMP)
@Column(name="usr_inicio_expiracao")
private Date usrInicioExpiracao;

@Column(name="usr_login")
private String login;

@Column(name="usr_nome")
private String usrNome;

@Column(name="usr_senha")
private String password;

@Column(name="usr_tipo_expiracao")
private String usrTipoExpiracao;

//bi-directional many-to-many association to Papel
@ManyToMany
@JoinTable(
	name="usuario_papel"
	, joinColumns={
		@JoinColumn(name="usr_codigo")
		}
	, inverseJoinColumns={
		@JoinColumn(name="pa_id")
		}
	)
private List<Papel> papels;

@Transient
public Collection<GrantedAuthority> getAuthorities() {
  List<GrantedAuthority> result = new ArrayList<GrantedAuthority>();
  for (Papel role : papels) {
    result.add(new GrantedAuthorityImpl(role.getPaPapel()));
  }
  return result;
}
[/code]
@Service("userDetailsService")
public class UserDetailsServiceImpl implements UserDetailsService {
	
	
	@Resource(name="UsuarioRepository")
	private UsuarioDao usuarioDao;

	@Transactional
	@Override
	public UserDetails loadUserByUsername(String username)
			throws UsernameNotFoundException{
		 
		try {
			
			Map<String, Object> parameters = new HashMap<String, Object>();
			parameters.put("login", username );
			
			//Usuario p = (Usuario) usuarioDao.findByNamedQueryAndNamedParams("Usuario.findByLogin", parameters); 
					//.getUsuarioByLogin(username);					
			
			Usuario u = usuarioDao.findOneResult("Usuario.findByLogin", parameters);			
			
			boolean enabled = true;
			boolean accountNonExpired = true;
			boolean credentialsNonExpired = true;
			boolean accountNonLocked = true;
			
			List<Papel> lista = u.getPapels();
			
			Collection<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>();
			//grantedAuthorities.add(new GrantedAuthorityImpl("ROLE_ADMIN")); // RoleName = "ROLE_ADMIN" or "ROLE_REGISTERED"
			for ( Papel p : lista) {
				grantedAuthorities.add(new GrantedAuthorityImpl(p.getPaPapel())); // RoleName = "ROLE_ADMIN" or "ROLE_REGISTERED"				
			}
			
			org.springframework.security.core.userdetails.User user = new org.springframework.security.core.userdetails.User(u.getLogin(), u.getPassword(), enabled, accountNonExpired,
					credentialsNonExpired, accountNonLocked, grantedAuthorities);
			
			return user;
			
		} catch (NoResultException e) {
			throw new UsernameNotFoundException("No such user");
		}
			
	}

}