我正在尝试使用自定义登录页面在我的spring boot 2应用程序中实现社交登录。我将spring-boot-starter-oauth2-client作为依赖项放置在pom中。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
然后我在我的应用程序属性文件中提供一些客户端ID和机密详细信息。
spring.security.oauth2.client.registration.google.client-id=client-id
spring.security.oauth2.client.registration.google.client-secret=client-secret
使用此最少的代码,Spring Boot会注册客户端,并提供一个登录页面,其中包含通过客户端登录的链接。现在,我想提供自己的登录页面,所以我创建了一个Seurity配置。
@Configuration
@EnableWebSecurity(debug = false)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/auth/**", "/login/oauth2/**", "/login**", "/logout", "/**/*.css", "/**/*.js").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login().loginPage("/login")
.and()
.logout();
}
}
然后我提供一个控制器来提供我的自定义登录页面,我现在才将其放在我的spring boot配置中。
@SpringBootApplication
@Controller
public class SingleSignonApplication {
public static void main(String[] args) {
SpringApplication.run(SingleSignonApplication.class, args);
}
@RequestMapping("/login")
public String loginPage() {
return "login.html";
}
}
..以及我的登录页面(简体)提供了通过google登录的链接。
<a class="btn btn-block btn-social btn-google" href="/oauth2/authorization/google"><span class="fab fa-google"></span> Sign in with Google</a>
现在,当我通过此按钮登录时,它将调用google,并通过身份验证,然后将其重定向到login / oauth2 / code / google ...时,我找不到404页面。 / logout也停止工作。我意识到我依靠Spring Boot来继续设置应用属性文件中列出的客户端并自动设置客户端存储库时,是否需要手动配置其他内容?