Durch die Aufnahme der Spring-sozialen Anmeldung/Anmeldung zu meinem aktuellen Spring-Boot-Projekt, durch die Umsetzung der Klassen ConnectionSignUp
und SignInAdapter
, die Anwendung, nach der Genehmigung mit dem sozialen Netzwerk Website, erfordert es die Implementierung eines Mappings für "/ Anmeldung" in meinem Controller. Bei dieser Methode mache ich grundsätzlich das gleiche was ich bereits bei der ConectionSignUp-Methode implementiert habe. Wer weiß, was ich tun kann, um diese Doppelzüngigkeit zu vermeiden, und die Anwendung auf meine Klasse ConnectionSignUp
statt eine zusätzliche Methode auf meinem Controller zu richten?Implementierung für implizite soziale Anmeldung im Frühjahr-Boot-Projekt
meine Implementierung bisher die folgenden Klassen umfasst:
ConnectionSIgnUp
@Component
public class CustomConnectionSignUp implements ConnectionSignUp {
@Autowired
private UsuarioDao account;
@Autowired
private JavaMailSender mailSender;
public String execute(Connection<?> connection) {
UserProfile profile = connection.fetchUserProfile();
String user;
try {
Usuario novo = new Usuario(profile.getUsername(),UUID.randomUUID().toString().replaceAll("-", ""),null,null,false,true);
account.insert(novo);
return novo.getLogin();
} catch (Exception e) {
return null;
}
}
}
SignInAdapter
@Component
public class CustomSignInAdapter implements SignInAdapter {
@Autowired
private SocialUserDetailsService socialUserDetailsService;
public String signIn(String userId, Connection<?> connection, NativeWebRequest request) {
SocialUserDetails user = socialUserDetailsService.loadUserByUserId(userId);
if(user != null)
SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(user.getUserId(), null, null));
return null;
}
}
SocialUserDetailsService
@Service
public class CustomSocialUserDetailsService implements SocialUserDetailsService {
@Autowired
private UsuarioDao account;
public SocialUserDetails loadUserByUserId(String userId) {
for(Usuario usuario : account.select())
if(usuario.getLogin().equals(userId))
return new SocialUser(usuario.getLogin(), usuario.getSenha(), usuario.isEnabled(), usuario.isAccountNonExpired(), usuario.isCredentialsNonExpired(), usuario.isAccountNonLocked(), usuario.getAuthorities());
return null;
}
}
application.properties
# SPRING SOCIAL (SocialWebAutoConfiguration)
spring.social.auto-connection-views=false
# SPRING SOCIAL FACEBOOK (FacebookAutoConfiguration)
spring.social.facebook.app-id=...
spring.social.facebook.app-secret=...
# SPRING SOCIAL TWITTER (TwitterAutoConfiguration)
spring.social.twitter.app-id=...
spring.social.twitter.app-secret=...