spring - 为什么我的弹簧控制器没有被调用?
问题描述
我正在尝试使用 Spring 5 针对 OpenId Connect 身份验证提供程序配置身份验证。
这是我的 configure() 方法:
package my.pkg.security.spring.oidc;
...
@Configuration
@ComponentScan
@EnableWebSecurity
@PropertySource("classpath:application-spring-oidc.properties")
public class OidcSecurityConfig extends WebSecurityConfigurerAdapter {
...
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/oauth_login").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login()
.clientRegistrationRepository(clientRegistrationRepository())
.authorizedClientService(authorizedClientService())
.loginPage("/oauth_login")
.defaultSuccessUrl("/loginSuccess")
.failureUrl("/loginFailure")
.authorizationEndpoint()
.baseUri("/oauth2/authorize-client")
.authorizationRequestRepository(authorizationRequestRepository())
.and()
.tokenEndpoint()
.accessTokenResponseClient(accessTokenResponseClient())
.and()
.redirectionEndpoint()
.baseUri("/oauth2/redirect");
}
...
}
我的控制器:
package my.pkg.security.spring.oidc;
...
@Controller
public class LoginController {
@GetMapping(value = "/oauth_login")
public String getLoginPage(Model model) {
...
}
}
我的应用程序上下文.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:security="http://www.springframework.org/schema/security" xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd">
<!-- context:component-scan base-package="org.keycloak.adapters.springsecurity" / -->
<context:annotation-config/>
<bean class="my.pkg.security.spring.oidc.OidcSecurityConfig"/>
</beans>
当我尝试访问应用程序的受保护资源时,请求会按预期重定向到 /oauth_login。但是,当这种情况发生时,我得到一个 HTTP 404。似乎我的控制器映射被忽略了。
你能看出我的配置有什么问题吗?
解决方案
推荐阅读
- c# - AWS NLog:更新 AWSTarget.LogStreamPrefix 以在运行时修改 Cloudwatch 流名称
- javascript - jQuery 和 Javascript 中的数组动画
- c# - CS0120 尝试调用不同脚本上的方法,但产生此错误
- javascript - Moment JS天差问题
- pytorch - Bert forward 在 GPU 上报错;但在 CPU 上运行良好
- python - Python 库默认安装到 Python 2.7
- android - 将多张图片(近 100 张)从 Android 上传到 Amazon S3?
- git - Git不会将未暂存的更改移动到另一个分支
- html - 将鼠标悬停在导航栏中时不显示文本
- visual-studio - 如何减少运行 480,000 次迭代的循环的执行时间?