Comment faire pour ajouter des détails supplémentaires à la Sécurité Printemps userdetails

Je veux ajouter des informations supplémentaires à userdetails comme adresse Ip de l'utilisateur. Est-il un moyen pour y parvenir? J'ai essayé de créer un nouveau CustomSpringUser classe mais le problème est de savoir comment puis-je obtenir cette information à partir de l'Authentification de l'objet. Est-il un autre moyen pour stocker des informations supplémentaires pour l'utilisateur authentifié?

Authentication auth = SecurityContextHolder.getContext().getAuthentication();

Ma classe user personnalisée;

public class CustomSpringUser extends org.springframework.security.core.userdetails.User {

public String ip;

public CustomSpringUser(String username, String password, Collection<? extends GrantedAuthority> authorities) {
    super(username, password, authorities);
}

public CustomSpringUser(String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities, String ip) {
    super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
    this.ip= ip;
}

}

Edit: j'ai trouvé que l'on peut ajouter des informations supplémentaires pour l'Authentification mais je n'ai pas trouvé comment faire.
http://docs.spring.io/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/core/Authentication.html#getDetails()

@Override
public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException {
    try {

        AppUser appUser = new AppUser();
        appUser.setUsername(userName);

        AppUser domainUser = genericDao.getByTemplate(appUser).get(0);

        boolean enabled = true;
        boolean accountNonExpired = true;
        boolean credentialsNonExpired = true;
        boolean accountNonLocked = true;

        List<String> roles = new ArrayList<String>();
        roles.add(domainUser.getRole().getName());

        return new CustomSpringUser(
                domainUser.getUsername(),
                domainUser.getPassword().toLowerCase(),
                enabled,
                accountNonExpired,
                credentialsNonExpired,
                accountNonLocked,
                getGrantedAuthorities(roles),
                ***domainUser.getAccount().getIdentificationId())*** ;

    } catch (Exception e) {
        genericLogger.saveLog(Logger.Status.ERROR, "Couldn't login", e);
        throw new RuntimeException(e);
    }
}
IP address voulez-vous savoir? L'adresse ip est stockée dans le WebAuthenticationDetails de sorte que vous n'avez pas besoin de stocker ce qui est déjà disponible. Vous pouvez obtenir en appelant getDetails() sur l'authentification de l'objet, de la UserDetails sont disponibles en appelant le getPrincipal() méthode sur la Authentication. Voir la [documentation javadoc ](docs.printemps.io/printemps-sécurité/site/docs/3.1.x/apidocs/org/...).
Adresse Ip a été un exemple. En fait, je veux ajouter quelques autres informations d'Authentification. J'ai édité ma question. Je veux obtenir mon ip personnalisée valeur de la variable.
Comme je l'ai mentionné dans mon premier commentaire getDetails() n'est PAS pour le UserDetails, pour que l'utilisation getPrincipal().
Merci il fonctionne. Écrire une réponse.

OriginalL'auteur hellzone | 2013-09-13