ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ASP.NET - Cookies, Session
    스마트팩토리 개발자 교육(23.05.08 ~ 23.10.27)7/ASP.NET 2023. 6. 19. 17:10

    *Session : 사용자의 정보를 일정기간 서버에 등록해 상태확인에 사용되도록한다

    ex) 로그인후 로그아웃 전까지 지속적으로 로그인 상태 유지

     

    *Session 관리 방법
    1. Sticky Session = 세션이 저장되어 있는 서버 컴퓨터에 고정적으로 요청이 되도록 한다
    장점 : 설정이 쉽다
    단점 : 부하분산이 이루어 제대로 이루어 지지 않는다
    - 자주 사용되지 않는 서버에 사용하면 좋다

    2. Session Clustering = 서버의 세션을 서로 공유한다
    장점 : 로드밸런싱 가능, 다른 서버에도 정보가 있어 장애 복구에 용이하다
    단점 : 관리의 어려움, 프로그램 병렬화의 어려움
    복제를 구성해, 구성이 좋지 못하다

    3. External Server = DB에 Session을 저장한다
    단점 : DB에 과부화가 걸린다

     

    Session

    // Program.cs
    builder.Services.AddSession(options => {
        options.IdleTimeout = TimeSpan.FromMinutes(10);
    });
    
    
    // Controller
    	HttpContext.Session.SetInt32("id", 1);
        HttpContext.Session.SetString("name", "test");

    Cookies : Session과 동일한 역활이지만 정보를 암호화 하여 클라이언트에 저장을 한다

    - 암호화를 하는 이유는 클라이언트가 변조를 하지 못하도록 만들게 하기 위함이다

    - 암호화 할 때 사이트에 고유의 키값으로 암호화를 한다

    - 사용자 정보, 키를 조합한 암호화 정보를 사용자에게 준다

    - 클라이언트는 사용자의 정보와 암호화된 정보(Cookies)를 서버에 전달해 사용자 정보를 Key값으로 암호화 하여 전달받은 Cookies와 비교하여 변조 여부를 확인한다

    Cookies

    // Program.cs
    builder.Services.AddAuthentication(
        CookieAuthenticationDefaults.AuthenticationScheme
        ).AddCookie(options => {
            options.AccessDeniedPath = "/web/error";
            options.LoginPath = "/web/login";
        });
        
        //////////////////////////////////////////////////
        app.UseAuthentication(); // 순서 지켜서 사용
    
    	app.UseAuthorization();

     

    // Controller
    var identity = new ClaimsIdentity(
                        new[]
                        {
                            new Claim(type:ClaimTypes.Name, "test"), // 저장하고 싶은 사용자 명
                            new Claim(type:ClaimTypes.Role, "User"),  // 권한
                        }, authenticationType : CookieAuthenticationDefaults.AuthenticationScheme);
    
                    HttpContext.SignInAsync(
                        scheme: CookieAuthenticationDefaults.AuthenticationScheme,
                        principal: new ClaimsPrincipal(identity: identity),
                        properties: new AuthenticationProperties()
                        );

    '스마트팩토리 개발자 교육(23.05.08 ~ 23.10.27)7 > ASP.NET' 카테고리의 다른 글

    파일 업로드 원컴퓨터(상품등록)  (0) 2023.07.09
    ASP.NET - ORM  (0) 2023.06.19
    ASP.NET - Routeing  (0) 2023.06.19
    ASP.NET - 카카오 로그인  (0) 2023.06.16
    ASP.NET - Redis  (0) 2023.06.15

    댓글

Designed by Tistory.