我无法理解一件事。
我在服务器上使用http-basic
身份验证。
我的代码是:
@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());
}
我对/user
的请求映射是:
@GetMapping
public Principal user(Principal user){
return user;
}
当我在邮递员应用程序中使用用户名和密码查询端点/user
时,会得到所需的经过身份验证的结果。
但是,当我使用故意的错误密码更新标头时,我仍然仍然获得经过身份验证的结果。我不明白为什么会这样。
此外,端点POST
上的/logout
请求失败,并显示:
{
"timestamp": "2018-07-30T07:42:48.172+0000",
"status": 403,
"error": "Forbidden",
"message": "Forbidden",
"path": "/logout"
}
我听不懂。任何帮助表示赞赏。