如何使用Spring Social从SecurityContextHolder获取用户的登录Id?

如何使用Spring Social从SecurityContextHolder获取用户的登录Id?,spring,spring-security,Spring,Spring Security,那么,如何从任何社交提供商的当前登录用户处获取用户id? 我知道我可以构建一个定制的SocialUser,就像我为用户做的一样,但是在这种情况下,SocialUserDetails上没有getter,我得到的方法只接受userDetails,而不是普通的Person实体 public class SocialUsersDetailServiceImpl implements SocialUserDetailsService { private UserDetailsService s

那么,如何从任何社交提供商的当前登录用户处获取用户id? 我知道我可以构建一个定制的SocialUser,就像我为用户做的一样,但是在这种情况下,SocialUserDetails上没有getter,我得到的方法只接受userDetails,而不是普通的Person实体

public class SocialUsersDetailServiceImpl implements SocialUserDetailsService {


    private UserDetailsService service;

    public SocialUsersDetailServiceImpl(UserDetailsService service) {
        this.service = service;
    }

    @Override
    public CSocialUserDetails loadUserByUserId(String username) throws UsernameNotFoundException, DataAccessException {
        UserDetails userDetails = (UserDetails) service.loadUserByUsername(username);
        return new CustomSocialUser(userDetails.getUsername(), userDetails.getPassword(), userDetails.getAuthorities(), userDetails.getUserIdentifier()??);

    }
}
但是在UserDetails上没有.getUserIdentifier方法,有一些解决方法吗

我为用户所做的方式:

@Service
public class UserDetailsServiceImpl implements CUserDetailsService {

   @Resource
   private PersonRepository respository;

    @Override
    public CUserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        Person p = repository.findByUsername(username);
        return new CUser(p.getUsername(), p.getPassword(), p.grantedAuthorities(), p.getIdPerson());
    }
}
而库塞尔:

public class CUser extends User{


    private Number identifier;

    public CUser(String username, String password, Collection<? extends GrantedAuthority> authorities, Number identifier) {
        super(username, password, authorities);
        this.identifier = identifier;

    }


    public Number getUserIdentifier() {
        return identifier;
    }

}