세션관리를 어떻게 해야하는지 정석(?)을 알고싶습니다

대충 세션관리를 구글링하면 첫페이지에 AsyncStorage를 쓰라는 내용이 보이는데요
그냥 AsyncStorage에 토큰을 넣어서 관리하나요?
제가 대충 생각하기에도 이렇게 하게 되면 보안측면에서 상당히 부실할꺼같은데요.
보통 개발자님들은 어떻게 처리하시는지 궁금합니다.
앱 개발에서는 초보라서 이런 기초적인 기능 구현에 대해 무지합니다…
이런 기초 기능 (세션관리, state관리 등등…) 대한 강의자료 추천도 부탁드립니다.
감사합니다…

AsyncStorage는 파일에다가 저장하고 불러오고를 하는 스토리지라고 생각하시면 됩니다. 단말에는 두가지 스토리지가 존재합니다. sqlite또는 flie이죠.

세션을 관리할 때 파일에 저장하는건 잘못된 상식입니다. 보통 네트워크 라이브러리들이 쿠키 및 세션을 관리할 수 있도록 방법들을 제공하고 그것들을 활용하곤 하죠 (사실 라이브러리들도 내부적으로 파일에 저장하고 있긴합니다. 이중적으로 처리를 하는 것을 지양하는 부분에서 말씀드리는 부분입니다). 당연히 모두 암호화 되어야 하고요.

과거에 AsyncStorage를 사용하는 경우에는 대개 매번 앱을 새로 진입할 때 로그인을 강제하여 session을 다시 불러오곤 했습니다. 이럴 때는 id와 password를 암호화해서 저장해야하는데 AsyncStorage 자체는 암호화를 하지 않기 때문에 다른 라이브러리들을 활용했죠. react-native-keychain 같은 라이브러리가 그런 역할을 도와줍니다.
(첨언: 아이디와 암호를 아무리 암호화 해도 앱 내에 저장하는 일은 없어야 합니다. Session 정보를 암호화 해서 저장해야 하지만 과거에 세션 유지가 어려워서 간혹 소위 말하는 꼼수방식으로 저렇게 하는 앱들이 종종 있었습니다. 현재도 많이 있을 거라 예상이 되긴 합니다.)

세션 정보들은 서버에서 관리되고 있어서 서버쪽에서 과부하가 생길 우려가 있어 jwt라는 기술이 나왔고 이 방법을 요즘 많이 쓰긴하죠. 모두 장/단점이 있습니다. 세션을 효율적으로 관리하기 위해 redis를 많이 쓰기도 합니다.

관련 내용들을 숙지하시면 도움이 되실 것 같습니다.

P.S 관련 내용을 궁금해 하시는 분들이 많은데 제가 당시 대충 답변을 드린 부분들이 있어 수정했습니다. - Mar/4/2019

1 Like

구체적인 예시 감사합니다. 자동 로그인쪽도 궁금했었는데 대략적인 내용도 알려주셔서 감사합니다.
해당 키워드들로 검색하면서 구현해봐야겠네요
그리고 혹시 리액트 네이티브에서 추천하실만한 무료 강의라던지 있을까요?
영문 강의라도 상관없습니다.
감사합니다.

흠 글쎄요 슬랙에 자주 있는 질문인데 워낙 빠르게 바뀌기도 하고 해서 공식 docs를 보는게 가장 빠른 것 같아요.

새로운 글 올렸어요. 댓글 기다려봐요!

1 Like