登出无法在Spring Security的Basic Auth中使用

时间:2018-07-30 09:29:32

标签: spring-security http-post logout http-basic-authentication

Spring Github Repo官方自述文件如下:

  

该应用程序几乎在功能上完成了。我们的最后一件事   需要做的是实现我们在   主页。如果用户通过了身份验证,那么我们将显示“注销”链接   并将其挂钩到AppComponent中的logout()函数。记住它   将HTTP POST发送到“ / logout”,我们现在需要在   服务器。这很简单,因为它已经为我们添加了   Spring Security(即,我们无需为此简单操作做任何事情   案件)。为了更好地控制注销行为,您可以使用   例如,您的WebSecurityAdapter中的HttpSecurity回调   注销后执行一些业务逻辑。

来自:https://github.com/spring-guides/tut-spring-security-and-angular-js/tree/master/single

但是,我正在使用基本身份验证,并使用Postman应用程序对其进行测试。 '/logout'上的POST给我一个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上进行POST(无论如何也给出403)之后,该应用程序仍会从上一个会话接受/user上的GET并向我显示用户的详细信息。

端点为:

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

0 个答案:

没有答案