스프링부트 프로젝트 개발중에 로그인시 접속한사람의 IP 등을 확인할수있게 만든 자바유틸이다.
아이피같은경우는 로컬에서 접속시 0:0:0:0:0:1 으로 ipv4가 아닌 ipv6 로 나오기때문에 로그인할때 다시 처리해줘야하는 번거로움이있었다.
그방법이 크게어렵지않아서 구글링하면 찾을수있을것이다.
참고 : https://jul-liet.tistory.com/202
package com.example.demo.util.common;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ConnectUtil {
static final Logger log = LoggerFactory.getLogger(ConnectUtil.class);
public static String getIp(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
log.info("X-FORWARDED-FOR : " + ip);
if (ip == null) {
ip = request.getHeader("Proxy-Client-IP");
log.info("Proxy-Client-IP : " + ip);
}
if (ip == null) {
ip = request.getHeader("WL-Proxy-Client-IP");
log.info("WL-Proxy-Client-IP : " + ip);
}
if (ip == null) {
ip = request.getHeader("HTTP_CLIENT_IP");
log.info("HTTP_CLIENT_IP : " + ip);
}
if (ip == null) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
log.info("HTTP_X_FORWARDED_FOR : " + ip);
}
if (ip == null) {
ip = request.getRemoteAddr();
log.info("getRemoteAddr : "+ip);
}
log.info("Result : IP Address : "+ip);
return ip;
}
public static String getBrowser(HttpServletRequest request) {
// 에이전트
String agent = request.getHeader("User-Agent");
// 브라우져 구분
String browser = null;
if (agent != null) {
if (agent.indexOf("Trident") > -1) {
browser = "MSIE";
} else if (agent.indexOf("Chrome") > -1) {
browser = "Chrome";
} else if (agent.indexOf("Opera") > -1) {
browser = "Opera";
} else if (agent.indexOf("iPhone") > -1 && agent.indexOf("Mobile") > -1) {
browser = "iPhone";
} else if (agent.indexOf("Android") > -1 && agent.indexOf("Mobile") > -1) {
browser = "Android";
}
}
return browser;
}
public static String getOs(HttpServletRequest request) {
// 에이전트
String agent = request.getHeader("User-Agent");
String os = null;
if(agent.indexOf("NT 6.0") != -1) os = "Windows Vista/Server 2008";
else if(agent.indexOf("NT 5.2") != -1) os = "Windows Server 2003";
else if(agent.indexOf("NT 5.1") != -1) os = "Windows XP";
else if(agent.indexOf("NT 5.0") != -1) os = "Windows 2000";
else if(agent.indexOf("NT") != -1) os = "Windows NT";
else if(agent.indexOf("9x 4.90") != -1) os = "Windows Me";
else if(agent.indexOf("98") != -1) os = "Windows 98";
else if(agent.indexOf("95") != -1) os = "Windows 95";
else if(agent.indexOf("Win16") != -1) os = "Windows 3.x";
else if(agent.indexOf("Windows") != -1) os = "Windows";
else if(agent.indexOf("Linux") != -1) os = "Linux";
else if(agent.indexOf("Macintosh") != -1) os = "Macintosh";
else os = "";
return os;
}
public static String getWebType(HttpServletRequest request) {
String filter = "iphone|ipod|android|windows ce|blackberry|symbian|windows phone|webos|opera mini|opera mobi|polaris|iemobile|lgtelecom|nokia|sonyericsson|lg|samsung";
String filters[] = filter.split("\\|");
String webType = "";
for(String tmp : filters){
if ( request.getHeader("User-Agent").toLowerCase().indexOf(tmp) != -1) {
webType = "MOBILE";
break;
} else {
webType = "PC";
}
}
return webType;
}
}
'Java > Java😊' 카테고리의 다른 글
[Java] enum 개념과 예시 (0) | 2023.05.10 |
---|---|
[Java] 다중 파일 업로드 (MultipartFile[]) window,linux (0) | 2022.04.20 |
[Java] excel 파일 데이터 처리 (0) | 2021.11.19 |
[Java] 현재 분기 구하기 (0) | 2021.06.15 |
[JAVA] Split 함수 (0) | 2020.10.18 |