当前位置: 首页 > 知识库问答 >
问题:

执行登录保存请求后,Spring Boot Security POST重定向到LoginPage

戎劲
2023-03-14

我正面临着一个很烦人的问题,我不知道该如何处理。我正在登录到我的应用程序中,导航工作良好,登录/注销工作良好。但是当我想在某处保存一些东西时,我会被直接重定向到登录页面。在日志中,只有我的LoginController被执行。当我再次登录,然后我的POST请求执行,数据是安全的。我在应用程序中到处都有这种行为,我认为这是Spring Security的配置问题。任何帮助都是非常欢迎的。

我的Spring Security配置:

@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    final FormLoginConfigurerEnhancer enhancer;
    final AuthenticationSuccessHandler authenticationSuccessHandler;

    @Override
    public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/webjars/**", "/css/**", "/js/**", "/images/**");
    } 

    @Override
    public void configure(HttpSecurity http) throws Exception {
        enhancer.addRecaptchaSupport(http.formLogin())
            .loginPage("/login")
                .successHandler(authenticationSuccessHandler)
                .and()
                .csrf().disable()
            .authorizeRequests()
                .antMatchers("/", "/login", "/home", "/registration").permitAll()
                .anyRequest().authenticated()
        ;
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth, UserDetailsService userDetailsService) throws Exception {
        auth.userDetailsService(userDetailsService);
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

我使用的是Spring Boot最新的2.1.6版本。

共有1个答案

王昆
2023-03-14

我找到了一个办法,什么能解决我问题。但它更多的是一种变通方法,不知道为什么它现在起作用,而以前不起作用。所以我在这里写了我是如何得到它的工作的答案,但任何背景知识或更好的解决方案仍然欢迎。

主要的问题是,当我发送一个保存东西的帖子时,我被Spring Security注销了。所以我玩了一下Spring Security方法中的.logout

我的注销URL应该像/login?logout。Spring Boot的默认URL是/logout。但我必须手动设置logoutUrl以使我的保存功能正常工作。所以现在我将其定义.logouturl(“/login?logout”),那么保存就可以了。(当我移除它并保存一些东西时,我就会注销!)

@Override
public void configure(HttpSecurity http) throws Exception {
    enhancer.addRecaptchaSupport(http.formLogin())
        .loginPage("/login")
            .successHandler(authenticationSuccessHandler)
            .and()
            .csrf().disable()
            .logout().logoutUrl("/login?logout")
            .and()
        .authorizeRequests()
            .antMatchers("/", "/login", "/home", "/registration").permitAll()
            .anyRequest().authenticated()
    ;
}
@PostMapping("/logout")
public ModelAndView logout() {
    return new ModelAndView("redirect:/login?logout");
}

这一切都是超级丑陋和混乱,但我真的不知道这是怎么回事。请把光放进黑暗中。非常感谢你

 类似资料:
  • 我有一个Spring BootUI应用程序。我试图在登录后将用户重定向到最初请求的URL。 当用户请求http://www.example.com/myapp/user/22时,应用程序会适当地重定向到http://www.example.com/myapp/login.一旦用户登录,应用程序会重定向到http://www.example.com/myapp/dashboard.我希望应用程序重定

  • 我想限制我的WordPress网站的某些页面登录用户。 为此,我编写了一些代码,将用户重定向到登录页面,并设置我的成员身份插件,然后将他们重定向到最后一个用户页面。问题是,wp_redirect函数不保存URL,所以在登录之后,用户会被重定向到他们之前所在的页面,而不是他们试图访问的页面(受限页面)。 对这个烦人的问题的任何帮助都将非常感激!:)我的代码在下面。

  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

  • 我有一个登录表单,在单击时调用以下函数。 然后使用重定向 但我面临的问题是,当我第一次登录时,重定向无法工作。它设置了所有的cookie等等,但是它从来没有将用户重定向到想要的目录。所以我被迫在浏览器搜索栏中输入我想要的路由来重定向自己。 这意味着,一旦我强迫自己进入想要的目录,如果我注销(基本上删除cookies),并尝试再次登录。这一次重定向起作用了。 在我用Ctrl+F5清除所有缓存之前,它

  • 我正在将DNN应用程序从07.00.02升级到07.03.04并在安装后将所有门户重定向到登录页面。所有门户都配置有一个登陆页面,该页面被配置为允许“所有用户”角色视图访问。还有人在升级后遇到过这个问题吗? 2015-02-05 05:45:01 127.0.0.1 GET/-80-127.0.0.1 Mozilla/5.0+(Windows+NT+6.3;+WOW64)+AppleWebKit/

  • Reducer.js 我想在成功登录后重定向/主页。我如何重定向?