我遇到了 Spring Boot 注销的问题。
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/", true)
.permitAll()
.and()
.httpBasic();
// Logout
http.logout().deleteCookies("remove")
.invalidateHttpSession(false)
.logoutUrl("/logout").permitAll()
.logoutSuccessUrl("/login").permitAll();
}
登录后,如果我尝试访问“http://localhost:8080/logout”,它会失败:
<块引用>白标错误页面此应用程序没有明确的映射 /error,因此您将其视为后备。
Mon Jan 04 17:40:21 BRT 2021 出现意外错误(type=Not 已找到,状态=404)。没有可用的消息
--编辑 现在尝试通过 POST 访问注销,会导致错误 403,有时会导致 401。
Javascript:
function logout() {
$.post("/logout", {});
}
HTML:
<li class="nav-item">
<a href="javascript:logout()" class="nav-link">Sair</a>
</li>
答案 0 :(得分:1)
由于您使用的是 HTTP Basic,请尝试清除浏览器历史记录。另一种选择是使用隐身模式。
原因是 HTTP Basic 没有有效的注销方式。它会一直存在,直到您关闭窗口或清除浏览器缓存。
这不是 Spring 的问题,而是 HTTP Basic 如何工作的问题。
关于基本身份验证的相关问题。 How to log out user from web site using BASIC authentication?