You need to enable JavaScript to run this app. 如何配置Spring Security拦截未认证用户访问指定LOGOUT_URL
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Spring Security拦截未认证用户访问指定LOGOUT_URL

问题原因

Spring Security 过滤器链中,LogoutFilter 的执行优先级高于授权校验过滤器,你在 authorizeRequests 中配置的权限规则还未触发,注销请求就已经被 LogoutFilter 处理完毕,因此现有配置不会对注销地址生效,和是否是@RestController端点无关。

解决方案

直接调整注销配置的默认放行规则即可,修改后的代码如下:

protected void configure(HttpSecurity http) throws Exception {
    http
            .csrf().disable()
            .authorizeRequests()
            .anyRequest().permitAll()
        .and()
            .logout()
            .logoutUrl(LOGOUT_URL)
            // 关闭注销地址的默认全量放行权限
            .permitAll(false)
            .invalidateHttpSession(true)
            .logoutSuccessHandler(logoutSuccessHandler);
}

配置完成后,只有已认证的用户可以正常调用注销接口,未认证用户访问该地址会直接返回403拒绝响应,完全符合需求。

如果需要对注销请求做更自定义的权限校验,也可以在LogoutFilter之前插入自定义过滤器做前置校验:

// customLogoutAuthFilter为自行实现的权限校验过滤器
http.addFilterBefore(customLogoutAuthFilter, LogoutFilter.class);

内容的提问来源于stack exchange,提问作者karim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 20:51:02