Spring security logoutSuccessUrl to loginlogout 似乎受到保护,虽然登录页面允许所有人
haluo1
阅读:129
2025-02-15 21:57:57
评论:0
我有以下 Spring Security 设置。
请注意,成功注销会再次返回登录页面。
http
.csrf()
.disable()
.authorizeRequests()
.antMatchers("/**").hasRole("USER")
.and()
.formLogin()
.loginPage("/login")
.failureUrl("/login?error")
.defaultSuccessUrl("/")
.permitAll()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login?logout")
我可以使用此设置登录和注销。
然而,注销以/login 而不是/login?logout 结束。
当我再次登录时,它会转到/login?logout。
所以看起来/login?logout 似乎受到保护......尽管登录页面是允许的。
任何想法如何解决这个问题?
编辑
正如 Bart 建议的那样,我尝试添加一个 AntMatcher 进行登录?注销,例如:
http
.csrf()
.disable()
.authorizeRequests()
.antMatchers("/ogin?logout").permitAll()
.antMatchers("/app/**").hasRole("USER")
.antMatchers("/login?logout").permitAll()
.and()
.formLogin()
.loginPage("/app/login")
.failureUrl("/app/login?error")
.defaultSuccessUrl("/app")
.permitAll()
.and()
.logout()
.logoutUrl("/app/logout")
.logoutSuccessUrl("/app/login?logout")
但它给出了相同的行为。注意我尝试在保护所有/** 源之前和之后添加它。
请您参考如下方法:
现在使用以下代码遇到了对我有用的相同问题:
http.logout().logoutSuccessUrl("/login?logout").permitAll();
(即添加
.permitAll()
是关键部分)
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。