반응형
쿠키 동기화 동작 순서(세션 유지용)
- 쿠키 동기화용 전역 변수 생성 및 초기화(CookieJar)
- retrofit2를 이용하여 로그인(CookieJar를 client로 지정)
- webview 초기화 시 CookieJar에 저장된 쿠키를 동기화 시켜줌
CookieJar 사용을 위한 준비
//project gradle에 추가
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
//app gradle
implementation 'com.github.franmontiel:PersistentCookieJar:v1.0.1'
CookieJar 전역 변수 생성 및 초기화
- 적절한 초기화 부분에 삽입
public class Common {
//전역 선언
public static String URL = "http://www.srctree.co.kr/myserver/";//base url
public static CookieJar cookieJar = null;
//...
}
//쿠키 동기화용 CookieJar 생성 : 적절한 초기화 위치
Common.cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(this));
retrofit2에 client로 지정
- cookieJar에 쿠키 정보가 저장됨
//OkHttpClient 생성
OkHttpClient client = new OkHttpClient.Builder().cookieJar(Common.cookieJar).build();
//client로 지정
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Common.URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
selfStickService = retrofit.create(SelfStickService.class);
webview 초기화 할때 쿠키 동기화
- cookieJar에 저장된 쿠키를 웹뷰에 주입
- 세션용 쿠키만 동기화 시키면 서버에서 동일한 세션으로 유지가 됨!
- 톰캣 : JSESSIONID, PHP : PHPSESSID
//---웹뷰 로딩시 쿠키 동기화------
//기존 쿠키 Clear
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.setAcceptThirdPartyCookies(webview, true);
cookieManager.removeAllCookies(null);
cookieManager.flush();
//CookieJar로 저장된 쿠키 읽어와서 주입시켜줌
List<Cookie> cookies = Common.cookieJar.loadForRequest(HttpUrl.parse(Common.URL));
if (cookies != null) {
for (Cookie cookie : cookies) {
//특정 조건을 두어서 그에 맞는 것만 주입
//아래는 JSP 톰캣의 세션을 위한 쿠키를 찾아서 넣는 것임("JSESSIONID")
//참고로 PHP에서의 세션 이름은 "PHPSESSID"
//(아래 조건을 없애면 모든 쿠키가 동기화 됨)
if (cookie.name().toLowerCase().contains("session") || cookie.name().toLowerCase().contains("sessid")){
String cookieString = cookie.name() + "=" + cookie.value() + ";";
cookieManager.setCookie(cookie.domain(), cookieString);
}
}
}
반응형
'안드로이드' 카테고리의 다른 글
Java 교차점 구하기 (0) | 2021.11.20 |
---|---|
Android AES(128, 192, 256) 암복호화 (0) | 2021.11.18 |
Android keystore(debug, release) SHA-1 확인 방법 (1) | 2021.11.18 |
Android Excel 파일 생성 후 공유 (0) | 2021.11.18 |
Android Retrofit2 사용하기 (0) | 2021.11.17 |
최근댓글