사전 준비


  • 도구 - NuGet 패키지 관리자 - 솔루션용 NuGet 패키지 관리를 선택합니다.

    1

  • Microsoft.AspNetCore.Session을 검색하여 1.x 버전을 다운로드 합니다. 현재 asp.net core가 2.x preview에 있으므로 본 프로젝트와 호환이 되지 않아 버전에 맞게 설치합니다.

    2

  • Startup.cs 파일에 세션 관련 설정을 추가합니다.

    services.AddSession(options =>
    {
    	options.IdleTimeout = TimeSpan.FromHoures(10); // 세션 만료 시간, 10시간
    	options.CookieHttpOnly = true;
    });
    

    3

    app.UseSession();	![4](https://luvery93.github.io/img/2017-08-21-using-session-in-asp-dot-net-core/4.png)
    

    4

  • 컨트롤러에서 세션을 사용할 경우 ISession 객체를 가져옵니다.

    private readonly IHttpContextAccessor _httpContextAccessor;
    private ISession _session => _httpContextAccessor.HttpContext.Session;
    
    public Controller(IHttpContextAccessor httpContextAccessor)
    {
    	_httpContextAccessor = httpContextAccessor;
    }
    

    5

  • 세션 값을 추가하려면 SetString, SetInt32 메소드를 이용합니다.

    6

  • 뷰페이지를 위해 세션 키값을 반환합니다. 이 떄 반환 형식은 IEnumerable<String> 입니다.

    7

  • 세션 값을 삭제하려면 Clear 메소드를 이용합니다.

    8

  • 예제 뷰 페이지를 생성합니다. ASP.NET Core - 웹 - ASP.NET - MVC 뷰 페이지를 생성합니다.

    9

  • 항목 6번에서 보낸 Key값은 IEnumerable<String> 이므로 Model의 형식을 설정하여 줍니다.

    10

  • 세션 객체인 ISession을 뷰페이지에서 그대로 사용하려면 아래 처럼 injection 코드를 작성합니다.

    @using Microsoft.AspNetCore.Http;
    @inject IHttpContextAccessor _httpContextAccessor
    
    @{
    	ISession _session = _httpContextAccessor.HttpContext.Session;
    }
    

    11

  • Index 페이지를 거쳐 SessionTest 페이지로 접근하였을 떄 결과입니다.

    12

  • 세션 Clear를 위해 SessionReset 페이지로 접근하였을 떄 결과입니다.

    13

    14