Spring security 在Spring Security的基本身份验证中注销不起作用

Spring security 在Spring Security的基本身份验证中注销不起作用,spring-security,http-post,logout,basic-authentication,Spring Security,Http Post,Logout,Basic Authentication,官方的Spring Github Repo自述如下: 应用程序几乎在功能上完成了。我们最后要做的事 需要做的是实现我们在 主页。如果用户经过身份验证,则显示“注销”链接 并将其挂接到AppComponent中的logout()函数。记住,它 向“/logout”发送HTTP POST,我们现在需要在 服务器。这很简单,因为它已经由 Spring Security(即,我们不需要为这种简单的使用做任何事情 案例)。要获得对注销行为的更多控制,您可以使用 例如,Web安全中的HttpSecurity

官方的Spring Github Repo自述如下:

应用程序几乎在功能上完成了。我们最后要做的事 需要做的是实现我们在 主页。如果用户经过身份验证,则显示“注销”链接 并将其挂接到AppComponent中的logout()函数。记住,它 向“/logout”发送HTTP POST,我们现在需要在 服务器。这很简单,因为它已经由 Spring Security(即,我们不需要为这种简单的使用做任何事情 案例)。要获得对注销行为的更多控制,您可以使用 例如,Web安全中的HttpSecurity回调适应于 注销后执行一些业务逻辑

摘自:

不过,我正在使用基本身份验证,并使用Postman应用程序对其进行测试。
“/logout”
上的帖子给了我一个403禁止,如下所示:

{
    "timestamp": "2018-07-30T07:42:48.172+0000",
    "status": 403,
    "error": "Forbidden",
    "message": "Forbidden",
    "path": "/logout"
}
我的安全配置是:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                    .authorizeRequests()
                    .antMatchers("/user/save")
                    .permitAll()
                .and()
                    .authorizeRequests()
                    .antMatchers("/user/**")
                    .hasRole("USER")
                .and()
                    .authorizeRequests()
                    .antMatchers("/admin/**")
                    .hasRole("ADMIN")
                .and()
                    .httpBasic()
                .and()
                    .logout()
                    .permitAll()
                .and()
                    .csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
    }
我希望会话无效,删除所有Cookie,这样当我使用错误凭据再次查询端点
/user
时,我应该得到403。但是,即使在发布了
/logout
(这会给出403)之后,应用程序也会接受上一个会话中的GET-on
/user
,并向我显示用户的详细信息

终点是:

@GetMapping
public Principal user(Principal user){
    return user;
}

好的,我有东西。控制台显示:
为找到无效的CSRF令牌http://localhost:8009/logout
。我明白这意味着什么,但为什么要这样?我可以在邮递员应用程序的cookies部分看到XSRF-TOKEN。唯一的原因可能是它没有发送cookie(?)好的,我制作了一个表单并发布到
/logout
,效果很好。邮递员应用程序一定有问题。无论如何,在我注销之后,浏览器仍然像以前一样发送
身份验证
标题,我在没有提示的情况下登录。仅供参考,在BASIC中注销没有意义。基本是无状态身份验证(随每个请求一起发送),没有应用程序注销之类的事情。。。您需要告诉浏览器停止发送授权标头。这不是应用程序所做的(与其他基于会话或基于令牌的身份验证方案不同,应用程序可以使其持有的某些状态无效)。可能重复的