-
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