안녕하세요. 로그인 정보가 필요한 서비스를 만들고 있습니다.


1. 액티비티에서 로그인을 한다.

2. 액티비티에서 로그인을 성공하여 얻어온 sessionid를 CookieManager에 보관한다.

3. CookieManager에 sessionid가 정상적으로 보관이 되었을 때에 한하여 서비스가 동작을 한다.


문제는 전달한 sessionid가 쿠키인 관계로 언젠가는 만료가 될 것입니다.

그래서 결국에는 서비스에서 쿠키가 만료되었을 때 다시 로그인하는 과정이 포함되어야 합니다.


4. 서비스가 동작하기 직전 CookieManager에게 removeExpiredCookie를 호출한다.

5. 다시 getCookie를 하여 현재 요청할 URL의 session 쿠키가 만료되었는지를 확인한다.

6. 만약에 만료가 되었다면 PreferenceManager에 저장된 ID와 패스워드로 로그인을 시도한다.

7. 로그인이 성공하였다면 CookieManager에 새로운 sessionid를 보관한다.

8. 외부에서 비밀번호가 변경되어 로그인에 실패하였을 경우 액티비티를 활성화한다.



작업이 완료된 부분은 3번까지입니다.

대부분의 어플리케이션들이 이렇게 동작을 할까요?


현재 걱정 중인 내용은 아래와 같습니다.


1. 세션 쿠키가 만료되진 않았지만 중복 로그인 등의 원인으로 서버에서 Session을 만료시켜버렸을 경우,

서비스에서 요청을 해보기 전까지 만료 여부를 알 수 없습니다.

무조건 요청은 보내보고 실패 응답을 받았을 경우 다시 로그인을 하는 것이 맞을까요?


2. 바로 위의 1번과 같은 예외 상황들 때문에 서비스에서 하는 일이 최초 구상에 비해 많아지고 있습니다.

특히나 인증 부분이 그렇습니다. 

인증이 필요한 모든 서비스들은 이러한 처리가 불가피한 것이 맞는지요?



혹시 비슷한 어플리케이션 제작을 해보신 분들의 조언을 얻고 싶습니다.