以下问题:
我用 Spring 创建了一个简单的注销:
<form th:action="@{/logout-custom}" method="POST" name="logoutForm"
id="logout">
<input type="submit"/>
</form>
安全:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/cont/**").access("hasRole('USER')")
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/login-success", true)
.failureUrl("/failLogin.html")
.permitAll()
.and()
.logout().logoutUrl("/logout").permitAll()
.and()
.csrf()
.disable();
}
控制器:
//Logout
@RequestMapping(value="/logout-custom", method = RequestMethod.POST)
public RedirectView logoutPage (HttpServletRequest request,
HttpServletResponse response) {
Authentication auth =
SecurityContextHolder.getContext().getAuthentication();
if (auth != null){
new SecurityContextLogoutHandler().logout(request, response, auth);
}
return new RedirectView("/loginForm.html");
}
// redirecting to login Page
依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
当我单击注销按钮时,它显示“不支持请求方法‘POST’”错误。
使用 GET 方法,它只是添加了一个“?” 在我的 url 后面签名既不显示错误也不重定向。我从我的 html 中删除了所有内容,除了表单,因为似乎有些脚本阻止了整个事情(这是后来的问题)。我还尝试删除控制器并仅使用 logout().logoutUrl().logoutSuccessUrl() 但这也不起作用。
当年话下
阿晨1998
一只萌萌小番薯
相关分类