Java Spring安全性:如何使用OAuth 2.0只允许访问登录页面?

Java Spring安全性:如何使用OAuth 2.0只允许访问登录页面?,java,spring-boot,spring-security,oauth-2.0,Java,Spring Boot,Spring Security,Oauth 2.0,我有一个使用Spring安全性和OAuth2.0库的Spring引导项目。 当我访问http://localhost:8080/login,将显示默认登录视图,我可以登录 但如果我实现如下所示的配置类: @EnableWebSecurity 公共类SecurityConfig扩展了WebSecurity配置适配器{ @凌驾 受保护的无效配置(HttpSecurity http)引发异常{ http .授权请求() .antMatchers(“/login**”).permitAll() .an

我有一个使用Spring安全性和OAuth2.0库的Spring引导项目。 当我访问
http://localhost:8080/login
,将显示默认登录视图,我可以登录

但如果我实现如下所示的配置类:

@EnableWebSecurity
公共类SecurityConfig扩展了WebSecurity配置适配器{
@凌驾
受保护的无效配置(HttpSecurity http)引发异常{
http
.授权请求()
.antMatchers(“/login**”).permitAll()
.anyRequest()
.authenticated();
}
}
浏览器返回“404未找到错误”。 我以为我可以通过身份验证直接访问Github的API,所以实现了这个,但它不起作用:

@RequestMapping(value=“/login”,method=RequestMethod.GET)
公共字符串登录(){
返回“重定向:/oauth2/authorization/github”;
}
我该如何应对?我知道我可能有一些误解,因为我缺乏知识, 但我只想知道,当用户未经身份验证时,如何只允许访问登录页面。
谢谢。

终于解决了! 我需要将以下部分附加到方法流的末尾

和()
.oauth2Login()
.login页面(“/login”);
最后的代码是:

SecurityConfig.java
@EnableWebSecurity
公共类SecurityConfig扩展了WebSecurity配置适配器{
@凌驾
public void configure(HttpSecurity http)引发异常{
http
.授权请求()
.antMatchers(“/login**”)
.permitAll()
.anyRequest()
.authenticated()
//附加
.及()
.oauth2Login()
.login页面(“/login”);
}
}
Controller.java
@GetMapping(value=“/login”)
公共字符串getit(模型){
返回“登录”;
}
login.html

成功了!
引用的URL:

如果您得到404,则URL是错误的。哪个网址?您放入浏览器地址栏或重定向URL的地址。您是否有任何来自服务器的关于您的请求的日志消息?如果您的请求真的到达了端点,可以在
login()
方法中添加一条简单的日志消息进行检查。另外,不是100%确定,但我认为您缺少一条
antMatcher
(单数)语句<代码>http.antMatcher(“/**”).authorizeRequests()…。不要将
antMatcher
(单数)与
antMatcher
(复数)混淆。在我的例子中,我使用了由DefaultLoginPageGeneratingFilter生成的默认登录页面,这导致了一些问题。我通过实现自己的登录页面解决了这个问题。如何使用默认登录页面还没有解决,但至少错误消失了。谢谢