개발자

webview_flutter 안드로이드 cookie 질문이요...

2024년 07월 31일조회 214

회사에서 부득이하게 앱개발자 없이 앱개발을 해야하는 상황이라 웹으로 만들고 flutter 웹뷰를 만들었습니다. iOS에서는 쿠키에 jwt가 저장되서 자동로그인 기능이 잘 작동되고 있는데요, 안드로이드에서는 cookie를 따로 관리를 해줘야 한다고 하더라구요... 그래서 webview_cookie_manager 와 flutter_secure_storage를 이용해서 onPageFinished가 될 때 main page이면 cookieManager.getCookies로 jwt를 가져오고 storage.write로 쿠키를 저장해 주고 있습니다. 그리고 initState()할때 Future<void> _loadStoredCookies() async { final jwt = await storage.read(key: 'jwt'); print('jwt : $jwt'); if (jwt != null) { final cookieManager = WebviewCookieManager(); await cookieManager.setCookies([ Cookie('jwt', jwt) ..domain = "메인페이지" ..path = "/" ..secure = true ..httpOnly = true ]); bool hasCookies = await cookieManager.hasCookies(); print('쿠키가 존재하는가? $hasCookies'); } } 이렇게 쿠키를 확인하고 쿠키를 set해주는데 백그라운드에서 앱을 완전히 종료시키고 다시 실행하면 쿠키가 사라지더라고요... 왜 그런건가요...??

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

이윤호님의 프로필 사진

기기에 직접 저장하는게 아닌 앱을 실행중일때만 저장하는 인메모리 캐쉬같네요 SharedPreference 같은거로 캐싱을 시도해보세요.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 07월 31일

안녕하세요, 안드로이드에서 쿠키 관리를 처리할 때의 이슈에 대해 질문해주셨군요. 우선 Android가 브라우저 쿠키를 어떻게 처리하는지 알아보면 도움이 될 것 같습니다. 안드로이드는 기본적으로 웹 브라우저와 앱 간에 격리된 환경을 유지하려고 합니다. 그러므로, 일반적인 상황에서 WebView는 자신만의 쿠키 스토어를 사용하며, 이는 브라우저와 다른 별도의 저장 공간입니다. 따라서 일반적으로 앱을 종료하면 그 내부의 WebView 쿠키도 함께 사라진다고 할 수 있습니다. 근본적인 해결책은 안드로이드가 제공하는 Persistent Cookie Store을 사용하는 것입니다. 이렇게 하면 앱이 종료되어도 쿠키가 유지됩니다. 하지만 이 기능은 flutter_webview_plugin과 같은 특정 웹뷰 플러그인에서만 지원됩니다. 현재 코드에서 문제가 되는 부분은 `initState()` 에서 cookie set 하는 과정에서 'domain' 값을 비워두신 것 같습니다. `Cookie('jwt', jwt) ..domain = ""` 여기의 domain 필드값이 비어있습니다. 여기에 해당 쿠키가 유효한 도메인 (즉, 쿠키를 설정할 웹사이트의 도메인)을 명시해야 합니다. 추가로, Flutter Secure Storage는 Keychain과 Keystore에 데이터를 저장하므로 앱이 종료되어도 데이터는 유지됩니다. 따라서 `storage.write`가 제대로 이루어져 있는지 확인하는 것도 좋을 것 같습니다. 위의 방법으로도 문제가 해결되지 않는다면, 추가적인 로그 출력등을 통해 더 많은 정보를 얻으신 후에 다시 질문을 남겨주십시오. 이 경우에는 앱 실행 시점의 쿠키 상태, storage.write 호출 이후의 상태 등 기타 웹뷰 설정 등이 함께 제공되면 더욱 정확한 답변을 드릴 수 있습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!