小编Str*_*uls的帖子

Spring Security注销不起作用 - 不清除安全上下文,并且经过身份验证的用户仍然存在

我知道,有很多关于这个主题的文章,但我有一个问题,我找不到任何解决方案.

我有一个经典的spring security java配置:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
private AuctionAuthenticationProvider auctionAuthenticationProvider;

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth.authenticationProvider(auctionAuthenticationProvider);
}

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

    ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry authorizeRequest = http.authorizeRequests();

    configureAdminPanelAccess(authorizeRequest);
    configureFrontApplicationAccess(authorizeRequest);
    configureCommonAccess(authorizeRequest);

    http.csrf()
        .csrfTokenRepository(csrfTokenRepository()).and()
        .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class);

    http.logout()
        .clearAuthentication(true)
        .invalidateHttpSession(true);
}
...
}
Run Code Online (Sandbox Code Playgroud)

另外,我有两个控制器方法,我通过AJAX从我的Web应用程序登录/注销.

当我想注销时,我首先调用这个方法,我期望清除用户会话并清除安全上下文中的所有内容.

@Override
@RequestMapping(value = "/logout", method = GET, produces = APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<Boolean> logout(final HttpServletRequest request, final HttpServletResponse response) {
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    if (auth != …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-security

11
推荐指数
1
解决办法
3万
查看次数

标签 统计

java ×1

spring ×1

spring-mvc ×1

spring-security ×1