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();
|
}
|
|
}
|
}
|