我正在尝试在我的应用程序中支持表单登录和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
或类似的方法来完成此任务?
最终找到了解决方案,如此处所述,您应该spring-security-oauth2-autoconfigure
使用@ EnableOAuth2Sso
批注使用包配置OAuth2授权,然后创建PrincipalExtractor以根据OAuth2提供程序发送的数据来构建用户实体。
这样,您可以getPrincipal()
在以后的调用中访问自己的模型对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句