마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

web view get 방식으로 Login 진행중 Session 문제 질문드립니다.

0 추천

하이브리드 앱을 제작하고 있는데 httpUrlConnection을 사용하지 않고

그냥 웹뷰에서 url로 Login을 체킹 합니다.

서버에서는 get방식으로 처리되도록 정상적으로 구축 했구요.

구체적으로 설명드리면

webView.loadUrl("http://tempsite.com/login.gs?id="아이디"&pw="비밀번호");

이런식으로 접근해서 웹페이지가 정상적으로 로그인을 했는지 확인되면 (DocumentFactory로 xml 정보를 가져와서 확인)

webView.loadUrl("http://tempsite.com/") 다음 url로 로드합니다.

한마디로

사용자가 아이디와 페스워드를 입력하면

webView.loadUrl("http://tempsite.com/login.gs?id="아이디'&pw="비밀번호"); -> 결과 값 사이트의 xml를 가져와서 아이디 비번확인 ->webView.loadUrl("http://tempsite.com/")->로그인이 된 페이지

 

그런데 중요한점은 ios나 크롬 익스플로러 같은 곳에서는 이런식으로 비지니스 모델 없이 url get 방식으로 바로 접근 해서 로그인 하여도 홈페이지에서 정상적으로 로그인된 페이지가 나오는데 안드로이드 webView나 기본 브라우져에서는 로그인된 페이지가 나타나지 않습니다. 어떻게 해결해야 할까요 ㅜㅜ?

머리용량한계 (290 포인트) 님이 2015년 10월 10일 질문

1개의 답변

0 추천
아마도 CookieManager를 사용해서 로그인된 정보가 담기는 쿠키를 사용해 주셔야 정상적으로 로그인이 될 것으로 보입니다. CookieManager를 사용하시는 방법은 구글링하시면 금방 확인하실 수 있을 것입니다.
mcsong (44,040 포인트) 님이 2015년 10월 10일 답변
cookieManager 사용해서 getCookie setCookie로 설정을 한뒤 JSESSIONID도 동일하다는 것을 로그 켓통해 확인했습니다.. .뭐가 문제일까요 ... ㅜㅜ
혹시 CookieManager를 사용하시는 코드 좀 볼 수 있을까요?
tempStr이 현재 보고 있던 웹페이지 url이고
                  LoginUrlStr은 get방식으로 구성되어있는 login url 입니다.
                  ex("http://tempsite.com/login.gs?id="아이디"&pw="비밀번호")

                 
                     String tempStr=webView_main.getUrl().toString();
                    String cookie=cookieManager.getCookie(tempStr);
                    Log.d("eddage", "temp Cookie : " + cookie);
                   cookieManager.setCookie(LoginUrlStr, cookie);

                    webView_main.loadUrl(LoginUrlStr);
                    cookie = cookieManager.getCookie(LoginUrlStr);
                    Log.d("eddage", "Login Cookie : " + cookie);
                    cookieManager.setCookie(tempStr, cookie);

                    webView_main.loadUrl(tempStr);
                    cookie = cookieManager.getCookie(tempStr);
                    Log.d("eddage", "retemp Cookie : " + cookie);
                    cookieManager.setCookie(LoginUrlStr, cookie);
혹시 CookieManager.getInstance().setAcceptCookie(true); <- 이거 호출을 빠트리지 않으셨나요? 설정 코드가 없으니.. 디버깅 하기 어렵네요.. ^^;;
아이고 선언부를 안썼군요 죄송합니다 ..onCreate 에 getInstance 했고 onstart on resume에 start/stopSync 했습니다
...