La sécurité de printemps obtient l'objet Utilisateur

J'ai mis en œuvre l'authentification de l'utilisateur par le biais de Printemps du Cadre de la Sécurité et tout fonctionne bien. Je peux me connecter et se déconnecter, je peux vous connecter nom d'utilisateur, par exemple comme ceci:

String userName = ((UserDetails) auth.getPrincipal()).getUsername();

Maintenant je veux obtenir de l'utilisateur comme un objet de base de données(j'ai besoin de l'id d'utilisateur et d'autres propriétés de l'utilisateur).

Ce que j'ai essayé jusqu'à présent:

User user = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();

Par la suite j'ai obtenu exception suivante:

Request processing failed; nested exception is java.lang.ClassCastException: org.springframework.security.core.userdetails.User cannot be cast to net.viralpatel.contact.model.User

Ici est une question - comment puis-je obtenir de l'Utilisateur en tant qu'objet, comment dois-je modifier mes classes UserDetailsServiceImpl et UserAssembler, des idées?

@Component
@Transactional
public class UserDetailsServiceImpl implements UserDetailsService{

    @Autowired
    private UserDAO userDAO;

    @Autowired
    private UserAssembler userAssembler;

    private static final Logger logger = LoggerFactory.getLogger(UserDetailsServiceImpl.class);

    @Transactional(readOnly = true)
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
        User user = userDAO.findByEmail(username);

        if(null == user) throw new UsernameNotFoundException("User not found");
        return userAssembler.buildUserFromUser(user);
    }
}

Et un autre:

@Service("assembler")
public class UserAssembler {

    @Autowired
    private UserDAO userDAO;

    @Transactional(readOnly = true)
    public User buildUserFromUser(net.viralpatel.contact.model.User user) {
        String role = "ROLE_USER";//userEntityDAO.getRoleFromUserEntity(userEntity);

        Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
        authorities.add(new GrantedAuthorityImpl(role));

        return new User(user.getLogin(), user.getPassword(), true, true, true, true,  authorities);
    }
}

source d'informationauteur user3127896 | 2014-07-27