前提・実現したいこと
現在Railsを使ってECサイトを制作しています。
例えばスマホとパソコンでログインした時に別のセッションIDがcookieに振られてしまい、同じユーザーなのに同じRedisの情報を参照することができません。
同一ユーザーの場合はcookieに割り当てるセッションIDを同じにしたいのですがRailsが自動的にセッションIDを割り当てるため明示的に指定する方法がわかりません。
Redisにはカートに入れた商品などを保存しています。
同一ユーザーなのでログインしたらカートの中身も一緒であって欲しいのですがセッションIDが別なのでカートの中身が同期しません。
試したこと
まずAというユーザーをスマホとパソコンでログインしたとして、
先にパソコンでログインし下記のようなセッション情報が得られます。
パソコン:_session_id: "80fad951b532e19ba3e11a1ba89c18fc"
サーバー側でセッションを取り出してDBに保存します。
ruby
1User.find(1).update(session_id: request.session_options[:id]) 2#request.session_options[:id] = "80fad951b532e19ba3e11a1ba89c18fc"
スマホでログインします。
Ruby
1session_id = User.find(1).session_id 2cookies[:_session_id] = session_id 3#session_id = 80fad951b532e19ba3e11a1ba89c18fc
スマホ:_session_id: "fad951b532e19a1b80ba3e11a89c18fc"
スマホでcookie情報を確認しても値は上書きされずに新たに一意の_session_idが振られてしまいます。
どうしたらスマホとパソコンのcookieの_session_idを同じにできるのでしょうか?
知見のあるかたいらっしゃいましたらご教示いただけますと幸いです。
*カートの中身をDBに保存するなどセッションを使わない回避策はあると思いますが勉強のためにもセッションを利用して実現することが目的です。
補足情報(FW/ツールのバージョンなど)
AWS Elasticache for Redis
EC2 Amazon Linux2
Rails 6.0.3.6
Ruby 2.7.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/01 10:43