2017-12-15 25 views
1

passengerauthlogicのrails 4.0.3を使用してWebアプリケーションを構築しています。ユーザーがログインしても、以前のユーザーの信頼性トークンを使用しているとき新しいUserSession。誰もセッションについてこれを体験しましたか?これにより、ユーザー2がユーザー1のセッションの下でログインし、誤ったアクセス権を持つことになります。UserSession認証トークンが異なるユーザー間で共有されています

ユーザー1つのログイン要求:

I, [2017-12-14T15:08:11.566277 #25162] INFO -- : Started POST "/login" for 172.68.xxx.xxx at 2017-12-14 15:08:11 +0000 
I, [2017-12-14T15:08:11.567479 #25162] INFO -- : Processing by UserSessionsController#create as HTML 
I, [2017-12-14T15:08:11.567545 #25162] INFO -- : Parameters: {"utf8"=>"✓", "authenticity_token"=>"4FgeuK825Mw4wfKvnHv1CXg3t5sNV1P621fdsgXzplE=", "user_session"=>{"email"=>"[email protected]", "password"=>"[FILTERED]"}, "commit"=>"Sign In"} 

ユーザのログイン要求2:それを破壊することを確認するためにActionController ::ベース#のhandle_unverified_requestをオーバーライドする

I, [2017-12-14T15:08:49.905291 #25162] INFO -- : Started POST "/login" for 172.68.xxx.xxx at 2017-12-14 15:08:49 +0000 
I, [2017-12-14T15:08:49.906435 #25162] INFO -- : Processing by UserSessionsController#create as HTML 
I, [2017-12-14T15:08:49.906494 #25162] INFO -- : Parameters: {"utf8"=>"✓", "authenticity_token"=>"4FgeuK825Mw4wfKvnHv1CXg3t5sNV1P621fdsgXzplE=", "user_session"=>{"email"=>"[email protected]", "password"=>"[FILTERED]"}, "commit"=>"Sign In"} 

答えて

0

してみてください。

class ApplicationController < ActionController::Base 
    helper_method :current_user_session, :current_user 

    private 
    def current_user_session 
     return @current_user_session if defined?(@current_user_session) 
     @current_user_session = UserSession.find 
    end 

    def current_user 
     return @current_user if defined?(@current_user) 
     @current_user = current_user_session && current_user_session.user 
    end 

    protected 
    def handle_unverified_request 
     # destroy session, redirect 
     if current_user_session 
     current_user_session.destroy 
     end 
     redirect_to root_url 
    end 
end 
+0

提案していただきありがとうございます。先ほどお話したとおり、handle_unverified_requestを適用しました。私は一晩中何らかのテストを行い、まだ真正のトークンが重複していないかどうかを確認し、問題が解決したかどうかを報告します。 – nurbrun

+0

バグのないユーザーセッションの週末後にフォローアップ。助けてくれてありがとう。 authlogic gemをアップグレードし、スレッドセーフ依存性もアップグレードされていることに気付きました。ちょうど推測ですが、多分サーバーの負荷が高かった時に共有トークンが発生していたので、それは問題の一部でした。 – nurbrun

関連する問題