You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.4 KiB
71 lines
2.4 KiB
3 years ago
|
package com.fr.plugin.oauth;
|
||
|
|
||
|
import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider;
|
||
|
import com.fr.plugin.oauth.utils.CookieUtils;
|
||
|
import com.fr.plugin.oauth.utils.GZipUtil;
|
||
|
import com.fr.plugin.oauth.utils.ResponseWrapper;
|
||
|
|
||
|
import javax.servlet.FilterChain;
|
||
|
import javax.servlet.ServletOutputStream;
|
||
|
import javax.servlet.http.Cookie;
|
||
|
import javax.servlet.http.HttpServletRequest;
|
||
|
import javax.servlet.http.HttpServletResponse;
|
||
|
|
||
|
import static javax.servlet.http.HttpServletResponse.SC_OK;
|
||
|
|
||
|
public class LogoutFilter extends AbstractGlobalRequestFilterProvider {
|
||
|
@Override
|
||
|
public String filterName() {
|
||
|
return "logoutFilter";
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String[] urlPatterns() {
|
||
|
return new String[]{
|
||
|
"/decision/logout"
|
||
|
};
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain filterChain) {
|
||
|
try {
|
||
|
ResponseWrapper responseWrapper = new ResponseWrapper(res);
|
||
|
filterChain.doFilter(req, responseWrapper);
|
||
|
|
||
|
//String newContent = null;
|
||
|
String newContent = "{\"data\":\"https://xx/\"}";
|
||
|
|
||
|
byte[] content = responseWrapper.getContent();
|
||
|
if (content.length > 0 && res.getStatus() == SC_OK) {
|
||
|
String header = res.getHeader("Content-Encoding");
|
||
|
boolean isGzip = "gzip".equalsIgnoreCase(header);
|
||
|
if (isGzip) {
|
||
|
content = GZipUtil.decompress(content);
|
||
|
}
|
||
|
|
||
|
|
||
|
byte[] result = null;
|
||
|
|
||
|
if (isGzip) {
|
||
|
result = GZipUtil.compress(newContent.getBytes("UTF-8"));
|
||
|
res.setHeader("Content-Encoding", "gzip");
|
||
|
} else {
|
||
|
result = newContent.getBytes("UTF-8");
|
||
|
}
|
||
|
//把返回值输出到客户端
|
||
|
res.setContentLength(-1);
|
||
|
res.setContentType("text/html;charset=UTF-8");
|
||
|
ServletOutputStream out = res.getOutputStream();
|
||
|
out.write(result);
|
||
|
out.flush();
|
||
|
out.close();
|
||
|
res.flushBuffer();
|
||
|
}
|
||
|
Cookie cookie = CookieUtils.getLoginPathCookie(req);
|
||
|
CookieUtils.deleteCookie(res, cookie);
|
||
|
} catch (Exception e) {
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
}
|
||
|
}
|