현재 스프링 부트 프로젝트에 스프링 - 사회 서명/가입을 추가하고 소셜 네트워크 인증 후 응용 프로그램 인 ConnectionSignUp
및 SignInAdapter
의 구현을 통해 내 컨트롤러에서 "/ signup"에 대한 매핑 구현이 필요합니다. 이 방법에서는 기본적으로 ConectionSignUp 메서드에서 이미 구현 한 것과 같습니다. 누구든지이 중복을 피하기 위해 내가 할 수있는 일을 알고 내 컨트롤러에서 하나의 추가 메서드 대신 ConnectionSignUp
클래스로 응용 프로그램을 안내합니까?스프링 부트 프로젝트의 암시 적 사회 가입을위한 구현
:
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=...