J'essaie de prendre en charge à la fois la connexion par formulaire et l'authentification Facebook dans mon application, le but est à la fois de créer un User
objet. Avec formLogin
je peux créer un contrôleur d'inscription et conserver mon entité utilisateur, mais comment puis-je intercepter l'authentification OAuth2 de Facebook pour créer (ou me connecter si elle existe déjà) une entité utilisateur?
Voici ma configuration de sécurité jusqu'à présent:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/oauth2/**", "/webjars/**", "/users/signup", "/users/recover", "/users/reset/**", "/img/**", "/css/**", "/js/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/users/login")
.successHandler(loginSuccessHandler())
.permitAll()
.and()
.logout()
.logoutUrl("/users/logout")
.logoutSuccessUrl("/users/login?logout")
.permitAll()
.and()
.oauth2Login()
.defaultSuccessUrl("users/facebook");
}
Existe-t-il un moyen de créer un successHandler
ou similaire pour accomplir cela?
Enfin trouvé la solution, comme mentionné ici, vous devez configurer votre autorisation OAuth2 avec le spring-security-oauth2-autoconfigure
package en utilisant l' @ EnableOAuth2Sso
annotation, puis en créant un PrincipalExtractor pour créer votre entité utilisateur en fonction des données envoyées par le fournisseur OAuth2.
De cette façon, votre propre objet modèle sera accessible getPrincipal()
lors d'appels ultérieurs.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots