開発環境
Rails 6 API モード + React Hooksです!
sessionにもDBやクッキーなど種類があると聞いたのですが、私はクッキーを利用してます。
症状
ログイン状態を保持するためログインした時にsessionにuserのIDを入れているが画面遷移したらsessionが空になっている。
解決したいこと
sessionが保存されないので保存できるようにしたいです!
試したこと
・config/application.rbに
config.api_only = false
をいれました。
・rails sしなおす。
コード
loginアクションをlogged_inアクションに移るようReact側でしています。
putsでsessionを出力してみてloginアクションではsessionが入っていることは確認できたのですが、logged_inアクションでは空になってしまいます
users_controller.rb
module Api module V1 class UsersController < ApplicationController def login user = User.find_by(email: params[:email], password: params[:password]) if user #この時点ではsession[:user_id]はちゃんと入ってます。 puts "success!!" session[:user_id] = user.id puts "session_id:#{session[:user_id]}" render json: { user: user, logged_in: true }, status: :ok else render json: {}, status: :internal_server_error end end def logged_in #ここで空になっています。 puts "session_id:#{session[:user_id]}" user = User.find_by(id: session[:user_id]) if user render json: { logged_in: true, user: @current_user } else render json: { logged_in: false, message: 'ユーザーが存在しません' } end end end end end
config/initializers/session_store.rb
ruby
1if Rails.env === 'production' 2 Rails.application.config.session_store :cookie_store, key: '_PuAReview', domain: '' 3else 4 Rails.application.config.session_store :cookie_store, key: '_PuAReview' 5end 6
何かご教示頂ければ幸いです。
よろしくお願いします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。