java - 不支持提供请求方法“POST”的 Spring 安全多重登录页面
问题描述
我检查了许多类似的问题,但无法解决我的问题。我有以下两个用于管理员和用户的 httpsecurity。
@EnableWebSecurity
public class SecurityConfiguration {
@Configuration
@Order(1)
public static class AdminSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(final HttpSecurity http) throws Exception {
// @formatter:off
http
.antMatcher("/admin/**")
.authorizeRequests()
.antMatchers("/admin/**").hasAuthority("ROLE_ADMIN")
.and()
.formLogin()
.loginPage("/admin-login")
.loginProcessingUrl("/admin-login")
.failureUrl("/admin-login?error")
.defaultSuccessUrl("/admin/home")
.and()
.logout()
.logoutUrl("/admin-logout")
.logoutSuccessUrl("/admin-login?logout")
.permitAll()
.and()
.csrf().disable();
// @formatter:on
}
}
@Configuration
@Order(2)
public static class UserSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(final HttpSecurity http) throws Exception {
// @formatter:off
http
.antMatcher("/user/home/**")
.authorizeRequests()
.antMatchers("/user/home/**").hasAuthority("ROLE_USER")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/user-login")
.loginProcessingUrl("/user-login")
.failureUrl("/user-login?error")
.defaultSuccessUrl("/user/home")
.and()
.logout()
.logoutUrl("/user-logout")
.logoutSuccessUrl("/user-login?logout")
.and()
.csrf().disable();
// @formatter:on
}
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public UserDetailsService userDetailsService() {
User.UserBuilder users = User.builder();
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(users.username("user").password(passwordEncoder().encode("user")).roles("USER").build());
manager.createUser(users.username("admin").password(passwordEncoder().encode("admin")).roles("USER", "ADMIN").build());
return manager;
}
}
每当我尝试登录管理员或用户端时,都会收到以下错误。
2021-03-11 16:46:31.357 WARN 1468 --- [nio-8080-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported]
任何帮助深表感谢。
这是重现问题的仓库。 https://github.com/venustulips/ss-2-login
解决方案
推荐阅读
- web - 当我刷新页面时,我的待办事项列表消失了
- beautifulsoup - BeautifulSoup - .string 为空
- networking - 如何在网络上选择具有最大或最小中心度的海龟并为其分配特定状态
- java - SpringBoot:如何通过 RestTemplate HttpMethod GET 发送对象?
- git - 当我将功能分支重新设置为主分支与将主分支重新设置为功能时有什么区别,以及何时使用它们?
- excel - 从 Outlook 导入约会
- spring-boot - Zuul 网关总是返回状态 200 - docker compose
- wordpress - Wordpress - 插入 ACF php
- asynchronous - Celery 任务中的同步 IO 功能?
- phpunit - 如何使用 pcov 获得代码覆盖率报告?