Spring security Spring Security 3.2 Can';t注销

Spring security Spring Security 3.2 Can';t注销,spring-security,Spring Security,我有一个Spring安全java配置 @Override protected void configure(HttpSecurity http) throws Exception { http. ... .logout() .permitAll(); } 根据文档(),注销URL与以前的版本相同,如j_spring\u security\u logout(有趣的是,登录表单中的任何其他URL都

我有一个Spring安全java配置

@Override
protected void configure(HttpSecurity http) throws Exception {

    http.
               ...
            .logout()
                .permitAll();
   }
根据文档(),注销URL与以前的版本相同,如
j_spring\u security\u logout
(有趣的是,登录表单中的任何其他URL都已更改)。这个URL不适合我


缺少什么?

使用Spring 3.2和Java Config,他们更改了默认URL/字段名以防止信息泄漏(人们可以通过查看字段名/URL来判断您正在运行Spring应用程序-这里简要介绍了更改)(虽然这只提到用户名/密码/etc,而没有明确提到注销,但我认为它已经因为同样的原因被更改了):

如果您更新了“发布到
/logout
的链接,它应该可以工作

如果查看类的源代码(单击Java代码配置),您将看到从配置中调用的
logout()
方法位于
HttpSecurity.class
上,该方法应用了类
LogoutConfigurer.class
——您可以在这里看到现在应用的默认匹配器:

public final class LogoutConfigurer<H extends HttpSecurityBuilder<H>> extends AbstractHttpConfigurer<LogoutConfigurer<H>,H> {
    private List<LogoutHandler> logoutHandlers = new ArrayList<LogoutHandler>();
    private SecurityContextLogoutHandler contextLogoutHandler = new SecurityContextLogoutHandler();
    private String logoutSuccessUrl = "/login?logout";
    private LogoutSuccessHandler logoutSuccessHandler;
    private RequestMatcher logoutRequestMatcher = new AntPathRequestMatcher("/logout", "POST");
公共最终类LogoutConfigurer扩展了AbstractHttpConfigurer{
private List logoutHandlers=new ArrayList();
私有SecurityContextLogoutHandler contextLogoutHandler=新SecurityContextLogoutHandler();
私有字符串logoutSuccessUrl=“/login?logout”;
私有LogoutSuccessHandler LogoutSuccessHandler;
private RequestMatcher logoutRequestMatcher=新AntPathRequestMatcher(“/logout”,“POST”);

(同样值得注意的是,POST方法-另外,如果您没有禁用CSRF保护,那么您需要提供CSRF字段-以及任何POST)

您可以共享SS XML吗?您可以详细描述这个问题吗。哪个版本的Spring Security(jar文件)?@OhadR我使用Java配置,如我的问题所示。@KingMaker我用Thymeleaf的注销代码:
  • 。单击链接后,仍会显示注销链接。感谢您使用POST方法指出。出于某种原因,我错过了第6.5.3节。但在4.2.4.注销处理中,它显示以下内容:“logout元素通过导航到特定URL来添加对注销的支持。默认注销URL为/j_spring_security_logout,但您可以使用logout URL属性将其设置为其他内容。有关其他可用属性的详细信息,请参阅命名空间附录。”。"无论如何,我解决了这个问题。是的,我发现3.2更改的某些部分缺少文档-我之前试图理解其中的一些内容,但在阅读spring代码时效果最好-代码不会说谎!使用eclipse/sts可以轻松地点击配置以查看源代码-建议您阅读http配置方法(如logout())的实际操作。感谢您分享您的提示。我刚刚向SS的现任主管Rob Winch发送了一条说明,以便在文档中添加迁移说明。