예전에 앱을 하나 만들면서 httpClient을 이용 했는데 세션 관련된 문제 때문에

엄청나게 골머리를 썩혔습니다.

앱이 잘 굴러가다가 자꾸만 세션을 잃어버리게 되고, 회원 인증이 안되고 기타등등...

결국 미완성 상태로 출시를 했다가 관리도 안하고, 망하고, 열받고 씩씩대다가

몇개월 전부터 다시 처음부터 진행하면서 이제는 알게 되었습니다.


우선 제 앱 같은 경우 기본적인 서버쪽 세션 로직은, 페이스북과 비슷합니다.

사용자가 로그아웃을 하고 다시 로그인을 하기 전까지는

세션을 잃어버리지 않고 (자동 로그인 하듯) 계속 유지해야 합니다.

이 부분은 여러분 모두가 (-0-) 알아서 구현 하셔야 합니다.


본론으로...

우선 제가 시스템 깊숙이 알거나 그러지 않고 겉만 햝는 정도입니다.

부족한 부분 있어도 이해해주시기 바랍니다.


포인트 입니다.

1. httpClient가 서버에 접속했을때 쿠키를 받아온 적이 있다면

다음 접속부터는 자기가 알아서 쿠키를 같이 날려 접속해준다는 점


2. 그래서 httpClient 클래스를 멤버 반드시 변수로 선언해야 될것 같지만

꼭 안그래도 된다는점


3. 어차피 메모리에서 없어지면...??


4. 그렇기 때문에 처음에 쿠키를 받아왔을때 preferences 같은 저장소에

저장 해두자 (당연한거지만 쿠키가 암호화 되어있어야 겠죠?)



기본적인 로직

4.png





다음은 제가 서버 접속과 관련된 작업을 수행하여 주는

ServerOperation 이라는 이름의 클래스 입니다.


1.png

38번째 줄을 보시면 updateCookie 라는 이름의 메소드를 먼저 호출하는것을 볼 수 있습니다.

이는 httpClient 쿠키 스토어에 쿠키 값이 있는지 검사하는 부분 입니다.


쿠키스토어의 값을 가져오는 메소드와

httpClient 쿠키스토어 리스트에 preferences 쿠키로 값을 넣는 메소드 입니다.

3.png