Extra Form
PHP PHP 8.1
CMS Rhymix 2.0

iOS 사파리 환경에서 로그인, 쿠키가 너무 자주 삭제되어서 관련 구글링을 해본 결과 아래 글들이 존재하네요.

 

저랑 동일 증상입니다

 

브라우저를 쓸때는 괜찮다가, 완전 종료를 하면 쿠키 자체가 날아가버리는 증상이네요.

 

 https://stackoverflow.com/questions/46774629/cookie-persistence-in-ios-safari-chrome

 

 https://sharovatov.github.io/posts/2014-07-ios-cookies.html

 

 해결책은 아래와 같이 쿠키 생성시 도메인까지 명시해줘야 안정적으로 저장되고, 아니면 죄다 삭제된다고 하는데요

iOS11에서는 그 엄격함이 더욱 강해졌다고 하네요

 

 document.cookie = cname + "=" + cvalue + ";" + expires + ";domain=" + window.location.hostname + ";path=/";

 

혹시 라이믹스 코어에도 해당 방향으로 구현이 되어있을까요? setCookie함수나, 아니면 XE.cookie.set 방식이 있던걸로 저는 알고 있습니다

 

웹뷰앱에서는 로그인이랑 다크모드가 잘 유지되는데, 사파리에서 항상 그러던 문제가 이제 실마리가 보이는것 같네요

 

저 같은 문제를 겪고 계신 사이트 운영자분이 계시다면

라이믹스 코어에 기여를 하고 싶어 공론화 해봅니다 

 

  • profile
    컨퍼런스에 나왔던 내용이네요.
    저희회사 영업팀에서도 골치아파 하는 내용입니다.
    쿠키가 사용자 추적에 이용이 되어서, 개인정보 보호를 위해 쿠키 lifetime을 무시하고 초기화하게 된다는군요.
  • profile

    세션 쿠키와 관련된 설정은 php.ini에서 자유롭게 지정할 수 있습니다. 라이믹스 설정 파일에서 강제로 지정하는 방법이 없지는 않지만, php.ini에서 설정하는 것이 정석이므로 필요시 php.ini를 먼저 시도해 보시기를 추천합니다.

     

    단, 그냥 도메인을 추가하기만 한다고 되는 것이 아니므로 간단한 테스트라도 함부로 하시면 곤란합니다. 대표적으로 푸시앱 사용시 쿠키 설정이 조금만 달라져도 문제가 되곤 합니다, 도메인 없는 쿠키를 사용하다가 갑자기 도메인을 추가하거나, 도메인 있는 쿠키를 쓰다가 갑자기 삭제하면 일반 브라우저에서도 문제가 됩니다. 도메인을 변경하는 것만큼이나 철저하게 준비해서 적용해야 합니다.

     

    문제가 일어나는 원인은 절대 다수의 브라우저가 1) example.com에서 도메인을 지정하지 않고 구운 쿠키와 2) example.com에서 domain=example.com으로 구운 쿠키를 전혀 다른 것으로 취급하기 때문입니다. 브라우저에는 두 개가 동시에 저장되고, 다음 페이지 접속시 둘 중 하나를 랜덤으로 서버에 전송합니다. 사용자 기기에 잘못된 쿠키가 한 번 구워져 버리면 되돌리기가 무척 어렵습니다. ㅠㅠ

  • profile profile
    헉 그러면 이미 오류가 발생하고 있는 iOS 사파리 유저들은 어쩔수가 없다는 말씀이실까요? ㅠㅠ
    지금 막 라이믹스 코어의 쿠키를 굽는 스크립트를 수정해보려고 하고 있었거든요..
  • profile profile
    대응을 하긴 해야겠지만, 단순히 도메인을 추가하기만 하는 방식으로 패치한다면 굉장히 많은 사이트에서 오류가 발생할 것이므로 주의해야지요...
  • profile profile
    감사합니다!
    그래도 우선 문제점이 무엇인지는 알아서 해결만 하면 될것 같네요 ㅠㅠ
  • profile profile
    혹시 말씀주신 'php.ini' 설정의 경우 https://stackoverflow.com/questions/18254681/session-cookie-domain-in-php-ini 가 맞을까요?

    바쁘실텐데 답변주셔서 너무 감사드립니다
  • profile profile
    네, 맞습니다.
  • profile profile
    사이트 이용자들에게는 쿠키/캐시를 전체 삭제 후 사이트를 이용부탁드린다고 전체 안내를 진행후,
    setcookie 함수를 수정하여 도메인 부분 설정과 samesite 부분 설정을 추가하였습니다.

    그러니까 모든 로그인 문제 및 다크모드 풀림 현상이 해결되었네요 ㅎㅎ
    혹시 코어 업데이트 시 참고가 될 수 있을 것 같아 공유드립니다.
  • profile profile
    세션 쿠키 한정으로 samesite 속성은 코어에서 설정할 수 있습니다.

    한 가지 꼼수로, php.ini에서 session.name을 기본값 PHPSESSID가 아닌 다른 것으로 변경하면 기존 세션과 충돌하는 문제는 피할 수 있습니다. 모두 한 번 로그인이 풀리고, 이후에는 완벽하게 작동하지요.

    가능하시다면 이 글 내용과 관련하여 깃허브에 이슈 남겨주시면 감사하겠습니다.
  • profile profile
    네 당연하죠 ㅎㅎ!
    저는 코어를 커스텀했지만, 코어 개발팀 분들께서는 저보다는 좀 더 효과적인 방법으로 수정하실 수 있으실것 같습니다 ㅠㅠ

    https://github.com/rhymix/rhymix/issues/1938