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