我正在尝试在我的应用程序中支持表单登录和Facebook身份验证,目的都是创建一个User
对象。借助formLogin
,我可以创建一个注册控制器并保留我的User实体,但是如何从Facebook截获OAuth2身份验证以创建(或登录(如果已有的话)一个)User实体?
到目前为止,这是我的安全配置:
@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");
}
是否可以通过创建successHandler
或类似的方法来实现此目的?
答案 0 :(得分:0)
最后找到了解决方案,如here所述,您应该使用spring-security-oauth2-autoconfigure
批注通过@ EnableOAuth2Sso
软件包配置OAuth2授权,然后创建一个PrincipalExtractor来构建用户实体基于OAuth2提供程序发送的数据。
这样,在以后的调用中,您可以通过getPrincipal()
访问自己的模型对象。