2013-09-24 7 views
11

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

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

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

は私session_controllerapplication.rbAdding cookie session store back to Rails API app

とでconfig.api_only = falseを追加しましたが、私は、格納するためのセッションを追加したトークン

# 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で、I 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 
+0

を見つけました。増加した露出のためにアップフォワードされました。 – sjmog

+0

問題を解決しましたか? https://github.com/rails-api/rails-api/pull/97 – enricostn

+0

こちらも参考にしてください:https://github.com/rails-api/rails-api/issues/73 – jottr

答えて

0

Pmcapi :: Application.config.session_store:cookie_store、キー: '_pmcapi_session'、expire_after:1.hour あなたは私から見ることができるものから、設定/初期化/ session_store.rb

1

でこれを試すことができますあなたのconfig.api_only = falseラインこれは、基本的には、だから私は自分のアプリケーションのコントローラで

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

ような何かをしようと提案し、あなたがrails-apiを使用することができ主な理由である、レールはフルスタックではなく、スリムなそれを維持を使用します。

問題が解決しない場合は、私はいつもよくサポートし、文書の宝石を使用してではなく、自分自身のコードを書くことを好むThis pull request about session management in the rails 4 stack

+0

さらにステップ: 'config.middleware.use ActionDispatch :: Cookies; config.middleware.use ActionDispatch :: Session :: CookieStore'を作成し、両方を設定する必要があります。設定例が必要な場合はお知らせください。私は別の回答に投稿します。これを行うと、 'devise'を統合するのがより簡単になります。 –

0

にご注目を集めてお勧めします。その理由は以下のとおりです。それはそれはあなたにお金を節約し、あなたの時間

  • を保存し

    1. あなたのプロジェクトで作業
    2. その他コーダー可能性が高く、あなたが実装したものに精通しているであろう、より保守しています。
    3. 私が持っているよりも多くの経験を持つ多くの人が少なくとも(私の場合は)少なくとも1年以上働いています。私は非常にあなたがDeviseいうか自分でこの種のものと格闘以外のよく確立された認証宝石のいずれかを使用する推薦する方法のうちそのすべてで

    私は同じ問題を抱えている

    にこの記事が参考にhttp://www.emilsoman.com/blog/2013/05/18/building-a-tested/