-
[ASP.Net Core] 접속자 IP 받기Microsoft .NET/ASP.Net & ASP.Net Core 2021. 7. 16. 14:35
"Startup.cs" 클래스의 "ConfigureServices 함수"에 아래 코드 추가
public void ConfigureServices(IServiceCollection services) { #region IP services.AddSingleton<Microsoft.AspNetCore.Http.IHttpContextAccessor, Microsoft.AspNetCore.Http.HttpContextAccessor>(); #endregion services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); }
IP를 받을 Controller에 아래 코드를 추가하고 생성자 명을 본인 코드에 맞게 변경합니다.
/// <summary> /// 생성자 /// </summary> /// <param name="_acc"></param> public UserController(Microsoft.AspNetCore.Http.IHttpContextAccessor _acc) { HttpContextAccessor = _acc; } #region IP private Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor; /// <summary> /// 접속자 IP 주소 /// </summary> public string IP { get { var result = string.Empty; //헤더에서 IP 주소 가져오기 if (HttpContextAccessor.HttpContext.Request.Headers != null) { //XFF(X-Forwarded-For) HTTP 헤더 필드는 클라이언트의 원래 IP 주소를 식별하기 위한 표준 //HTTP 프록시 또는 로드 밸런서를 통해 웹 서버에 연결 var forwardedHeader = HttpContextAccessor.HttpContext.Request.Headers["X-Forwarded-For"]; if (!Microsoft.Extensions.Primitives.StringValues.IsNullOrEmpty(forwardedHeader)) result = forwardedHeader.FirstOrDefault(); } //헤더가 없는 경우 연결 원격 IP 주소를 가져오기 if (string.IsNullOrEmpty(result) && HttpContextAccessor.HttpContext.Connection.RemoteIpAddress != null) result = HttpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString(); return result.Replace("::1", "192.168.0.1").Replace("::ffff:", ""); } } #endregion
'Microsoft .NET > ASP.Net & ASP.Net Core' 카테고리의 다른 글
[ASP.Net Core] (작성중) 리눅스(centOS) Docker 에 ASP.Net Core 배포 (0) 2021.08.18 [ASP.Net Core API] File Upload API / 파일 업로드 API (0) 2021.02.03 [ASP.Net Core API] Startup.cs에서 설정해야 할 것들 ( Swagger, CORS, formatFilter({format?}) ) (0) 2020.11.10 [ASP.Net Core API] API 주소 설정 (0) 2020.09.17 [ASP.Net Core API] 프로젝트 생성 및 기본 세팅 (0) 2020.09.16