springsecurity写一个退出登录功能
时间: 2023-05-12 11:07:10 浏览: 48
可以通过以下代码实现Spring Security的退出登录功能:
```
@RequestMapping(value="/logout", method = RequestMethod.GET)
public String logoutPage (HttpServletRequest request, HttpServletResponse response) {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (auth != null){
new SecurityContextLogoutHandler().logout(request, response, auth);
}
return "redirect:/login?logout";
}
```
这段代码会清除当前用户的认证信息,并重定向到登录页面。
相关问题
如何用springsecurity写一个退出登录功能
您可以使用Spring Security提供的logout()方法来实现退出登录功能。以下是一个简单的示例代码:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasAnyRole("USER", "ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login")
.invalidateHttpSession(true)
.deleteCookies("JSESSIONID");
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER")
.and()
.withUser("admin").password("{noop}password").roles("ADMIN");
}
}
在上面的代码中,我们使用了logout()方法来配置退出登录功能。其中,logoutUrl()方法指定了退出登录的URL,logoutSuccessUrl()方法指定了退出登录后跳转的页面,invalidateHttpSession()方法用于使HttpSession失效,deleteCookies()方法用于删除指定的Cookie。
希望这个示例代码能够帮助您实现退出登录功能。
Spring security oauth2 退出登录怎么写
Spring Security OAuth2 提供了一个 `/logout` 接口来实现退出登录的功能。当用户访问这个接口时,会删除用户的 access token 和 refresh token。
要使用 `/logout` 接口,需要在 Spring Security 配置文件中进行如下配置:
```java
@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.logout()
.logoutUrl("/logout") // 配置退出登录接口
.invalidateHttpSession(true)
.clearAuthentication(true)
.logoutSuccessUrl("/")
.deleteCookies("JSESSIONID")
.permitAll()
.and()
// 其他配置...
}
}
```
上面的配置将 `/logout` 接口配置为退出登录接口,并配置了退出登录后的一些操作,例如使 HttpSession 失效、清除认证信息、删除 JSESSIONID 等。其中 `logoutSuccessUrl("/")` 表示退出登录成功后跳转到首页。
然后在前端页面中,可以通过发送 POST 请求到 `/logout` 接口来触发退出登录的操作:
```html
<form th:action="@{/logout}" method="post">
<input type="submit" value="退出登录"/>
</form>
```
这样就可以实现 Spring Security OAuth2 的退出登录功能了。