html
<a href="/signOut">退出</a>
默认实现
![退出登录 退出登录](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgwNS82NjM1NTZjYzdkNDZjZWMxZGUyODU3ODQ1YTRkOTRmNS5wbmc=)
![退出登录 退出登录](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg3Ni9kOWQwMGMyN2UwMzExZDlmNTU1MGM2MmNmN2U5NmFlYy5wbmc=)
退出处理器
public class ImoocLogoutSuccessHandler implements LogoutSuccessHandler {
private Logger logger = LoggerFactory.getLogger(getClass());
public ImoocLogoutSuccessHandler(String signOutSuccessUrl) {
this.signOutSuccessUrl = signOutSuccessUrl;
}
private String signOutSuccessUrl;
private ObjectMapper objectMapper = new ObjectMapper();
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
throws IOException, ServletException {
logger.info("退出成功");
if (StringUtils.isBlank(signOutSuccessUrl)) {
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write(objectMapper.writeValueAsString(new SimpleResponse("退出成功")));
} else {
response.sendRedirect(signOutSuccessUrl);
}
}
}
@Configuration
public class BrowserSecurityBeanConfig {
/**
* 退出时的处理策略配置
*
* @return
*/
@Bean
@ConditionalOnMissingBean(LogoutSuccessHandler.class)
public LogoutSuccessHandler logoutSuccessHandler(){
return new ImoocLogoutSuccessHandler(securityProperties.getBrowser().getSignOutUrl());
}
}
.logout()
.logoutUrl("/signOut")
.logoutSuccessHandler(logoutSuccessHandler) 配置了handler,logout不能用了
.deleteCookies("JSESSIONID") //删除cookie
.and()