본문 바로가기

Dev/Mobile

[Android] 웹뷰 자동로그인을 위한 여정 #2

반응형

출처 https://interconnection.tistory.com/

2020/02/29 - [인스타링크] - [인스타링크] 우리나라가 코로나에 망하지 않은 이유

2020/02/29 - [인스타링크] - [인스타링크] 신천지도 입장 가능한 피시방 조건

 

Android 내장 DB를 이용한 자동 로그인 

USER_TABLE Create

  • USER_ID
  • AUTO_LOGIN_FLAG
  • SESSION_KEY
  • SESSION_LIMIT

 Login ->

INSERT INTO USER_TABLE

          (  USER_ID

           , SESSION_KEY

           , SESSION_LIMIT

          ) VALUES (

             ${USER_ID)

           , ${SESSION_KEY}

           , ${SESSION_LIMIT}

          )

Auto Login Set->

UPDATE USER_TABLE

      SET AUTO_LOGIN_FLAG = 'Y'

 WHERE USER_ID = ${USER_ID}

 

Logout ->

UPDATE USER_TABLE

      SET AUTO_LOGIN_FLAG = 'N'

          , SESSION_KEY = ''

          , SESSION_LIMIT = ''

 WHERE USER_ID = ${USER_ID}

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static void webView2HttpClient(DefaultHttpClient httpClient, String url) {
        String SESSID = "JSESSIONID";
        String COOKIE_URL = url.substring(0, url.indexOf("/servlets"));
        String COOKIE_DOMAIN = COOKIE_URL.replace("http://""").replace("https://""");
        if (COOKIE_DOMAIN.indexOf(":"!= -1) {
            COOKIE_DOMAIN = COOKIE_DOMAIN.substring(0, COOKIE_DOMAIN.indexOf(":"));
        }
        String cookie = CookieManager.getInstance().getCookie(COOKIE_URL);
        String[] cookies = cookie.split(";");
        for (String keyValue : cookies) {
            keyValue = keyValue.trim();
            String[] cookieSet = keyValue.split("=");
            if (cookieSet != null && cookieSet.length == 2) {
                String key = cookieSet[0];
                String value = cookieSet[1];
                if (!SESSID.equals(key)) {
                    continue;
                } else {
                    BasicClientCookie bCookie = new BasicClientCookie(key, value);
                    bCookie.setDomain(COOKIE_DOMAIN);
                    bCookie.setPath("/");
                    final Date expire = new Date(System.currentTimeMillis() + 365 * 1000L);
                    bCookie.setExpiryDate(expire);
                    CookieStore store = httpClient.getCookieStore();
                    store.addCookie(bCookie);
                    httpClient.setCookieStore(store);
                    break;
                }
            }
        }
    }
cs

2020/01/29 - [Dev/안드로이드] - 안드로이드 SDK 번호와 버전 정리

 

참고자료

http://blog.naver.com/klps990612/
https://re-build.tistory.com/
https://gun0912.tistory.com/

반응형