Spring Security未授权用户无法访问登录页,陷入重定向循环
自定义登录表单引发Spring Security重定向循环问题
在Spring Security中配置自定义登录表单时,浏览器虽能重定向到目标URL /showMyLoginPage,但提示“页面未正确重定向”,无法正常显示登录页面。通过浏览器F12网络面板观察到,浏览器在反复请求该登录页URL,推测是Spring Security检测到用户未授权后,持续重定向至登录页,最终形成了重定向循环。
移除loginPage("/showMyLoginPage")配置后,重定向问题消失,但此时系统会使用Spring Security默认登录页,不符合自定义需求。
请求响应无有效内容,相关代码如下:
安全配置类代码
@Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests() .anyRequest().authenticated() .and() .formLogin() .loginPage("/showMyLoginPage") .permitAll(); return http.build(); }
控制器代码
@Controller public class MainController { @RequestMapping("/") public String testMapping() { return "home"; } @RequestMapping("/showMyLoginPage") public String loginPage() { return "users-login"; } }
Spring MVC配置类
@Configuration @EnableWebMvc @ComponentScan("com.user.springsecuritydemo") public class MainConfig implements WebMvcConfigurer { @Bean InternalResourceViewResolver configuInternalResourceViewResolver() { return new InternalResourceViewResolver("/WEB-INF/view/", ".jsp"); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry .addResourceHandler("/resources/**") .addResourceLocations("/resources/"); } }
DispatcherServlet初始化类
public class SpringMVCDispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { return null; } @Override protected Class<?>[] getServletConfigClasses() { return new Class[] { MainConfig.class }; } @Override protected String[] getServletMappings() { return new String[] { "/" }; } }
调试日志显示重定向循环相关记录,请求响应无有效信息。
内容的提问来源于stack exchange,提问作者GNU-foot
相关产品推荐
相关产品推荐

