Simple386 2023-11-06 16:03 采纳率: 0%
浏览 17

Sping security 登录页面重定向问题

Spring security 简单的配置了登录页面,打开就是重定向次数过多

  @Bean
    public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
        httpSecurity
                .csrf(AbstractHttpConfigurer::disable)
                .cors(AbstractHttpConfigurer::disable)
                .formLogin( form -> form
                        .loginPage("/mylogin.html")
                        .loginProcessingUrl("/dologin")
                        .failureUrl("/mylogin")
                        .successForwardUrl("/success"))
                .authorizeHttpRequests(authorizationManagerRequestMatcherRegistry -> authorizationManagerRequestMatcherRegistry
                        .requestMatchers("/mylogin","/dologin").permitAll()
                        .anyRequest()
                        .authenticated());
        return httpSecurity.build();
    }

 @RequestMapping("/mylogin")
    public String login () {
        return "mylogin";
    }
  @PostMapping("/dologin")
    public String dologin () {
        return "suceess";
    }

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-07 00:45
    关注

    【以下回答由 GPT 生成】

    问题原因是登录成功后的重定向导致了重复的重定向请求。可以通过以下几个步骤来解决:

    1. 首先,修改dologin()方法,登录成功时,将重定向到正确的页面而不是返回字符串"success",可以使用RedirectView来实现重定向:
    @PostMapping("/dologin")
    public RedirectView dologin() {
        return new RedirectView("/success");
    }
    
    1. 接着,修改SecurityFilterChain配置。在.formLogin()后添加.permitAll()方法,以允许所有用户访问登录页面。
    .formLogin(form -> form
        .loginPage("/mylogin.html")
        .loginProcessingUrl("/dologin")
        .failureUrl("/mylogin")
        .successForwardUrl("/success"))
    .permitAll()
    
    1. 添加一个新的控制器方法,用于处理登录成功后的重定向页面:
    @GetMapping("/success")
    public String success() {
        return "success";
    }
    

    通过这些修改,登录成功后只会进行一次重定向,从而解决了重定向次数过多的问题。

    完整代码如下:

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
        httpSecurity
            .csrf(AbstractHttpConfigurer::disable)
            .cors(AbstractHttpConfigurer::disable)
            .formLogin(form -> form
                .loginPage("/mylogin.html")
                .loginProcessingUrl("/dologin")
                .failureUrl("/mylogin")
                .successForwardUrl("/success"))
            .permitAll()
            .authorizeHttpRequests(authorizationManagerRequestMatcherRegistry -> authorizationManagerRequestMatcherRegistry
                .requestMatchers("/mylogin","/dologin").permitAll()
                .anyRequest()
                .authenticated());
        return httpSecurity.build();
    }
    
    @RequestMapping("/mylogin")
    public String login() {
        return "mylogin";
    }
    
    @PostMapping("/dologin")
    public RedirectView dologin() {
        return new RedirectView("/success");
    }
    
    @GetMapping("/success")
    public String success() {
        return "success";
    }
    

    注意:如果仍然遇到问题,请确认是否有其他相关配置或拦截器引起的重定向。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月6日

悬赏问题

  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
  • ¥100 无网格伽辽金方法研究裂纹扩展的程序
  • ¥15 错误于library(org.Hs.eg.db): 不存在叫‘org.Hs.eg.db’这个名称的程序包,如何解决?
  • ¥60 求一个图片处理程序,要求将图像大小跟现实生活中的大小按比例联系起来的
  • ¥50 求一位精通京东相关开发的专家
  • ¥100 求懂行的大ge给小di解答下!
  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活