[Blazor] 사용자별 또는 세션별 페이지 설정 기억하는 방법

image

이와 같이 구성될 경우, 선택된 필터에 따라서 데이터 표시부분이 달라지게 됩니다.

근데 다른 메뉴에 접근하고 난 뒤에 필터가 초기화되는건 어찌보면 당연한 결과인데요…

선택했던 필터가 자동 저장되어서 다른 메뉴로 갔다가 오더라도 선택항목을 유지하는 방법은

DB말고는 없을까요? 아니면 LocalStorage를 쓰는 방법을 써야하나요?

보통 어떤 방법을 선택하시는지 궁금합니다.

p.s. 며칠 전에 올렸던 허접한 질문에 달아주신 고급진 답변들 너무너무 감사합니다!! :+1:

1개의 좋아요

저도 이부분 고민 좀 했었는데요. 결국엔 Session Storage 사용했습니다.
검색 누르면 SeesionStorage에 저장하고, 다른 페이지 갔다가 다시 돌아오면 SessionSotrage에 있는 필터 불러다가 바로 데이터 불러와 주는 방식으로…

2개의 좋아요

공식 문서를 보시면
블레이저에서 상태관리 하는 방법과 해당 방법의 종류에 대해 잘 설명 되어 있습니다.

항상 고민이 생겼을때 공식 문서를 먼저 찾아 보시는 습관을 들이 시는걸 추천 드립니다.

ASP.NET 코어 블레이저 상태 관리 | 마이크로소프트 런 (microsoft.com)

상태관리 하는 방법은 크게 4가지 구성으로 제공 하고 있습니다.

  • Server-side storage
    DB방식, Blob 저장소 사용 등

  • URL
    쿼리스트링 형태로 URL 파라메터에 정보를 담고 계속해서 릴레이로 요청하는 방식
    예] 게시판 게시물에서 페이징 정보 처리

  • Browser storage
    로컬 스토리지 또는 세션 스토리지 사용
    로컬 스토리지 : 해당 브라우저 범위로 데이터의 생명주기가 관리 되며 브라우저 창을 닫았다가 다시 열어도 데이터 유지
    세션 스토리지 : 브라우저 탭 범위로 데이터 생명주기가 관리 되며 해당 탭에서 다시 로드 하면 데이터가 유지 되지만 탭을 닫거나 브라우저를 닫으면 데이터는 손실,
    ※ 탭을 여러개 띄운 경우 탭 별로 데이터는 고유함.

  • In-memory state container service
    컨트롤러 자체에서 메모리 상에서만 데이터를 관리
    기본적으로 싱글턴 형태 등으로 직접 처리 하지 않는 이상 별도로 데이터 수명관리를 하지 않음

직접 판단하여 성격에 맞는 상태관리 기법을 사용하시면 될 것 같습니다.

2개의 좋아요

저도 MS문서를 찾아보긴 했으나

실제 필드에서 서비스할 때 다른 분들은 주로 어떤 방법을 선택하시는지 궁금해서 질문드렸습니다.

답변 감사드립니다.

1개의 좋아요

실제 환경이 성격이나 보안 관점 등 다 다르기 때문에 일반화 하기 어렵습니다.

유저별로 데이터가 상시 보관 성격이라면
(예를 들어 장바구니 데이터 같은)

로그아웃후 로그인시에도 데이터가 유지 되어야 하니깐 server-side stroage 방식이 적합하겠고

일시적인 상태관리라면 메모리 방식이나 브라우저 스토리지 방식이 적합 합니다.

또한 브라우저 스토리지 방식은 비동기 로드 이기 때문에 서버측 데이터가 렌더링 되기 전까진 데이터를 불러 올 수 없는 성격도 있기 때문에 잘 판단 하셔야 합니다.

3개의 좋아요

@aroooong 님 말대로 실제 환경에 따라 모두 다르므로 일반화할 수는 없습니다.

하지만 말씀드릴 수 있는 부분은 필터/페이지 같은 경우는 다음과 같이 말씀드릴 수는 있을 것 같습니다.

  • URL에 저장하는 경우
    • 많은 검색 사이트(ex. 구글, 쇼핑몰…)에서 필터값, 검색어, 현재 페이지 인덱스…등을 URL에 저장합니다. URL에 저장하면 다음과 같은 이점이 있습니다.
    • URL을 공유할 경우 같은 페이지를 똑같이 보여줄 수 있습니다(공유 가능).
    • 브라우저 히스토리를 사용하기 때문에 bfcache를 사용가능합니다.
  • 브라우저 스토리지(localStorage, sessionStorage, cookie)에 저장하는 방식
    • 비회원 데이터/회원 ID/사용자 정의 설정같은 경우에는 브라우저 스토리지에 보통 저장합니다.
    • 컴퓨터마다/탭마다 다른 설정을 갖게 됩니다.
    • 세션스토리지 같은 경우에는 탭을 끄면 사라지는 특성이 있습니다.
    • 쿠키와 같은 경우에는 서버에서 확인할 수 있으므로 서버측에서 설정을 확인할 수 있습니다.
3개의 좋아요