CustomFilter.java
package io.hsquare.hds.core.security.filter;
import io.hsquare.hds.core.security.filter.support.HdsAuthorizationStrategy;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.filter.GenericFilterBean;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import static io.hsquare.hds.core.security.filter.support.HdsUriCheckerUtil.isCheck;
@Slf4j
public class CustomFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String url = null;
String start = null;
String end = null;
if (request instanceof HttpServletRequest) {
HttpServletRequest http = (HttpServletRequest) request;
url = http.getRequestURI();
start = simpleDateFormat.format(new Date());
int contentSize = http.getContentLength();
if (isCheck(((HttpServletRequest) request))) {
log.info("[Request] URL -> \\"{}\\" :::: Time (UTC time) -> \\"{}\\" :::: ContentSize -> \\"{}\\"", url, start, contentSize);
}
}
chain.doFilter(request, response);
if (response instanceof HttpServletResponse) {
HttpServletResponse http = (HttpServletResponse) response;
end = simpleDateFormat.format(new Date());
int contentSize = http.getBufferSize();
log.info("[Response] URL -> \\"{}\\" :::: Time (UTC time) -> \\"{}\\" :::: ContentSize -> \\"{}\\"", url, end, contentSize);
}
try {
long duration = (simpleDateFormat.parse(end).getTime() - simpleDateFormat.parse(start).getTime()) / 1000;
log.info("[Duration] URL -> \\"{}\\" :::: Time (UTC time) -> \\"{}초\\"", url, duration);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
SecurityConfig.java
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilterBefore(new CustomFilter(), BasicAuthenticationFilter.class);
}