ASP.NET Core에서 쿠키를 사용하는 방법

쿠키는 일반적으로 사용자에 대한 정보를 저장하는 데 사용되는 데이터 조각이며 사용자의 컴퓨터에 저장됩니다. 대부분의 브라우저에서 각 쿠키는 작은 파일로 저장되지만 Firefox에서는 모두 하나의 파일에 저장됩니다. 쿠키는 키-값 쌍으로 표시되며 키를 사용하여 쿠키를 읽거나 쓰거나 삭제할 수 있습니다.

ASP.NET Core는 쿠키를 사용하여 세션 상태를 유지합니다. 세션 ID를 포함하는 쿠키는 각 요청과 함께 클라이언트로 전송됩니다. 이 문서에서는 ASP.NET Core에서 쿠키를 사용하는 방법에 대해 설명합니다.

이 문서에 제공된 코드 예제를 사용하려면 시스템에 Visual Studio 2019가 설치되어 있어야합니다. 아직 복사본이없는 경우 여기에서 Visual Studio 2019를 다운로드 할 수 있습니다.

Visual Studio에서 ASP.NET Core MVC 프로젝트 만들기

먼저 Visual Studio 2019에서 ASP.NET Core MVC 프로젝트를 만들어 보겠습니다. Visual Studio 2019가 시스템에 설치되어 있다고 가정하고 아래에 설명 된 단계에 따라 Visual Studio에서 새 ASP.NET Core MVC 프로젝트를 만듭니다.

  1. Visual Studio IDE를 시작합니다.
  2. "새 프로젝트 만들기"를 클릭합니다.
  3. "새 프로젝트 만들기"창의 표시된 템플릿 목록에서 "ASP.NET Core 웹 애플리케이션"을 선택합니다.
  4. 다음을 클릭하십시오.
  5. “Configure your new project”창에서 새 프로젝트의 이름과 위치를 지정합니다.
  6. 선택적으로 "동일한 디렉토리에 솔루션 및 프로젝트 배치"확인란을 선택합니다.
  7. 생성을 클릭합니다.
  8. 다음에 표시된 "새 ASP.NET Core 웹 애플리케이션 만들기"창에서 런타임으로 .NET Core를 선택하고 상단의 드롭 다운 목록에서 ASP.NET Core 2.2 이상을 선택합니다.
  9. 새 ASP.NET Core MVC 애플리케이션을 만들려면 프로젝트 템플릿으로 "웹 애플리케이션 (모델-뷰-컨트롤러)"을 선택합니다. 
  10. 여기서는 이러한 기능을 사용하지 않으므로 "Docker 지원 활성화"및 "HTTPS 용 구성"확인란이 선택 취소되어 있는지 확인합니다.
  11. 여기서도 인증을 사용하지 않으므로 인증이 "인증 없음"으로 설정되어 있는지 확인합니다.
  12. 생성을 클릭합니다. 

이제 Visual Studio에서 사용할 수있는 새 ASP.NET Core MVC 프로젝트가 있어야합니다. 이 기사의 다음 섹션에서이 프로젝트를 사용할 것입니다.

ASP.NET Core에서 쿠키 읽기

Request.Cookies 컬렉션에서 쿠키를 읽을 수 있습니다. 다음 코드 조각은 ASP.NET Core의 Request 개체에서 쿠키를 읽는 방법을 보여줍니다.

문자열 쿠키 = Request.Cookies [ "키"];

쿠키의 만료 시간을 지정하려면 아래 제공된 코드 스 니펫에 표시된 Append 메서드의 오버로드 된 버전을 사용할 수 있습니다.

CookieOptions 옵션 = new CookieOptions (); 

option.Expires = DateTime.Now.AddMilliseconds (10); 

Response.Cookies.Append (키, 값, 옵션); 

CookieOptions 클래스를 사용하면 쿠키를 만들 때 다음과 같은 추가 속성을 지정할 수 있습니다.

  • 도메인 — 쿠키와 관련된 도메인을 지정하는 데 사용됩니다.
  • 만료 시간 — 쿠키의 만료 시간을 지정하는 데 사용됩니다.
  • 경로 — 쿠키 경로를 지정하는 데 사용됩니다.
  • 보안 정책 — HTTPS를 통해 쿠키에 액세스 할 수 있는지 여부를 지정하는 데 사용됩니다.
  • HttpOnly — 쿠키를 서버에서만 사용할 수 있는지 여부를 지정하는 데 사용됩니다.

ASP.NET Core에서 쿠키 작성

쿠키를 작성하려면 Request 개체와 관련된 Append 메서드를 사용할 수 있습니다. 다음 코드 스 니펫은이를 달성하는 방법을 보여줍니다.

Response.Cookies.Append (somekey, somevalue);

ASP.NET Core에서 쿠키 삭제

쿠키를 제거하려면 Request 개체와 관련된 Cookies 컬렉션의 Delete 메서드를 사용할 수 있습니다. 다음 코드 스 니펫은이를 달성하는 방법을 보여줍니다.

Response.Cookies.Delete (somekey);

ASP.NET Core에서 HttpContext에 액세스

이 섹션에서는 ASP.NET Core에서 쿠키 데이터로 작업하는 방법을 살펴 보겠습니다. Request 개체에 액세스하려면 HttpContext에 액세스해야합니다. IHttpContextAccessor 인터페이스를 사용하여 ASP.NET Core에서 HttpContext에 액세스 할 수 있습니다. HttpContextAccessor 클래스는이 인터페이스를 구현합니다.

먼저 종속성 주입을 위해 IHttpContextAccessor를 등록해야합니다. 다음 코드 조각은 Startup 클래스의 ConfigureServices 메서드에서 HttpContextAccessor 유형의 싱글 톤 서비스를 추가하는 방법을 보여줍니다.

public void ConfigureServices (IServiceCollection 서비스)

        {

            services.AddSingleton

            HttpContextAccessor> ();

            // 기타 코드

        }

종속성 주입을 활용하여 IHttpContextAccessor 인스턴스에 대한 참조를 가져올 수 있습니다. 그러면 HttpContext에 대한 참조가 제공됩니다.

다음 코드 조각은 컨트롤러에서 IHttpContextAccessor 인스턴스에 액세스하는 방법을 보여줍니다. HomeController는 Visual Studio에서 새 ASP.NET Core MVC 프로젝트를 만들 때 기본적으로 만들어집니다.

공용 클래스 HomeController : 컨트롤러

{

  개인 읽기 전용 IHttpContextAccessor _httpContextAccessor;

  공용 HomeController (IHttpContextAccessor httpContextAccessor)

  {

     this._httpContextAccessor = httpContextAccessor;

  }   

  // 여기에 액션 메소드를 작성하세요.

}

ASP.NET Core 컨트롤러 메서드에 쿠키 데이터 쓰기

다음 방법을 사용하여 컨트롤러에 쿠키 데이터를 쓸 수 있습니다.

공용 IActionResult 쓰기 (문자열 키, 문자열 값, 부울 isPersistent)

  {

       CookieOptions 옵션 = new CookieOptions ();

       if (isPersistent)

           options.Expires = DateTime.Now.AddDays (1);

       그밖에

           options.Expires = DateTime.Now.AddSeconds (10);

       _httpContextAccessor.HttpContext.Response.Cookies.Append

       (키, 값, 옵션);

       return View ( "WriteCookie");

  }

ASP.NET Core 컨트롤러 메서드에서 쿠키 데이터 읽기

쿠키 데이터가 성공적으로 기록되면 다음 방법을 사용하여 컨트롤러에서 쿠키 데이터를 읽을 수 있습니다.

공개 IActionResult 읽기 (문자열 키)

  {

       ViewBag.Data =

       _httpContextAccessor.HttpContext.Request.Cookies [키];

       return View ( "ReadCookie");

  }

쿠키가 올바르게 작성되었는지 확인하기 위해 웹 브라우저의 쿠키 캐시를 검사 할 수 있습니다. 향후 게시물에서는 ASP.NET Core에서 쿠키 기반 인증 및 권한 부여로 작업 할 수있는 방법을 살펴 보겠습니다.