package com.example.jz.auth; import cn.hutool.json.JSONUtil; import com.example.jz.modle.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.logout.LogoutHandler; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * @author 安瑾然 * @data 2022/7/18 - 10:45 AM * @description 登出 */ @Component public class MyLogoutHandler implements LogoutHandler { private TokenJwtManager tokenJwtManager; @Autowired public void setTokenJwtManager(TokenJwtManager tokenJwtManager) { this.tokenJwtManager = tokenJwtManager; } @Override public void logout(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) { // 从header中获取token String token = httpServletRequest.getHeader("token"); String username = tokenJwtManager.getUserName(token); // 设置返回消息类型 httpServletResponse.setHeader("Content-type", "text/html;charset=UTF-8"); httpServletResponse.setCharacterEncoding("utf-8"); httpServletResponse.setContentType("application/json;charset=UTF-8"); // 返回给请求端 PrintWriter writer = null; try { writer = httpServletResponse.getWriter(); writer.write(JSONUtil.toJsonStr(R.ok(null, username + "登出成功"))); writer.flush(); writer.close(); } catch (IOException e) { e.printStackTrace(); } } }