11

プロジェクトで rails_api gem を使用しています。認証用のセッション管理を追加したいのですが、セッションが機能していないようです。ここに私の設定がありますconfig/initializer/session_store.rb

Pmcapi::Application.config.session_store :cookie_store, {

  key: '_pmcapi_session', 
  expire_after: 1.hour
}

追加config.api_only = falseしましたapplication.rb( Cookie セッションストアを Rails API アプリに追加する)

そして私session_controllerの中に、トークンを保存するためのセッションを追加しました

# session_controller.rb
def create
  #just to generate new token
  user.reset_sso_token!
  session[:token] ||= user.sso_token
  self.current_user = user
  redirect_to root_path
end

の場合、application_controllerアクセスしたいのですsession[:token]が、結果はnil次のとおりです。

# application_controller.rb
def authenticate_user!
  #puts("User Authentication")
  #puts(request.authorization)
  #puts(request)
  @user = User.authenticate_with_token(session[:token])
  #head :unauthorized unless @user.present?
  redirect_to sign_in_path if @user.nil?
end
4

3 に答える 3

2

あなたのラインから私が見ることができることから、config.api_only = falseこれは基本的にレールをスリムに保つのではなく、フルスタックを使用するようにします。これが、使用できる主な理由ですrails-api

config.middleware.use Rack::Session::Cookie

アプリケーションコントローラーで。

それでもうまくいかない場合は、こちらのプル リクエストに注意を向けることをお勧めします Rails 4 スタックでのセッション管理に関するプル リクエスト

于 2015-01-13T11:56:27.183 に答える