vercel의 미리 보기 URL에서session을 저장할 수 없을 것 같습니다
따라서 rails 측에서 생성한session이 브라우저의 쿠키에 저장할 수 없는 이벤트가 발생하여 해결에 시간이 걸렸기 때문에 비망록입니다.
스케줄러:한달정도 시간이 비워져서해봤는데기억에 남는것밖에 없어서조금전후가 있을것 같아요.🙇♂️)
인증 정보는 브라우저의session 관리를 전제로 합니다.
문제의 발단
사용자가 새로 로그인할 때session을 생성하여 브라우저의 쿠키에 저장하고 사용자 정보를 처리하려고 합니다.
그래서 rails의 initializers.rb와 initializersstore.rb에 허가역 세션 이름 등이 설정되어 있습니다.
그런 다음 vercel의 미리 보기 URL에서 작업을 확인하는 동안 이벤트가 발생했습니다.
...저장하지 않습니다.
시도적 해결 방법
먼저 세션store.rb의 설정을 재고하기로 했습니다.
session_store.rb
if Rails.env === 'production'
Rails.application.config.session_store :cookie_store, key: '_セッション名', domain: 'ドメイン名'
else
Rails.application.config.session_store :cookie_store, key: '_セッション名'
end
이 제품의 도메인 이름에는 하위 영역에 설정할 수 있는 글이 많기 때문에vecel의 영역([랜덤 문자열].vercel.app)을 설정했습니다.session_store.rb
if Rails.env === 'production'
Rails.application.config.session_store :cookie_store, key: '_セッション名', domain: '.vercel.app'
else
Rails.application.config.session_store :cookie_store, key: '_セッション名'
end
및 변경합니다.하지만 움직이지 않는다.
검증 툴의 NetWork 레이블을 확인합니다.
반응도 없고 쿠키도 없고왜 그랬을까
그리고 SameSite 속성이 None이 아니라는 것을 판명합니다.
이 논이면 되겠지?
rails는gem에서 제공하기 때문에 사용했습니다
Gemfile
gem 'rails_same_site_cookie'
$ bundle install
다시 확인해보니 SameSite=None, 반응 중에도 과자!왔어!그렇게 말하고 싶었는데 검증 도구인 Application의 쿠키를 보고
저장되지 않음...
이거 대단해..
해결하다
그리고 마침내 격투는 다음과 같은 보도에 이르렀다.
결론적으로vercel의 미리보기 영역은 안 될 것 같고, 제작 영역은 그게 더 빠를 것 같아~.
제품의 하위 도메인, 세션 작성store.rb
session_store.rb
if Rails.env === 'production'
Rails.application.config.session_store :cookie_store, key: '_セッション名', domain: '.本番のドメイン名'
else
Rails.application.config.session_store :cookie_store, key: '_セッション名'
end
로 수정합니다.순조롭게 진행되었다.
vercel 미리보기에서 순조롭게 진행되지 못한 것은vecel의 규격?그렇습니까?
(개인적인 예측은vercel이 발행한 것이기 때문에vercel소유권이 탄력될까요?)
끝맺다
이번 일을 통해 무대 환경의 구축을 실감했다.
학습 단계에서 절대 눈치채지 못한 것은 실제 업무다.
자신이 알고 있는 것이 전체의 1%를 차지합니까?이런 느낌.
Reference
이 문제에 관하여(vercel의 미리 보기 URL에서session을 저장할 수 없을 것 같습니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/mochinozenn/articles/8218f316e704e7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)