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;
}