質問

デフォルトでは、すべてのRailsコントローラーがアプリケーションコントローラーを継承します。

私のアプリケーションでは、ユーザーがHTTP-Basic Authを使用して任意のページから認証できるようにし、投稿して認証できるようにしてください。

現在、物事はこのように見えます(単純化されています):

class ApplicationController < ActionController::Base
    before_filter :set_current_user

    private

    def set_current_user
        Authorization.current_user = current_user
    end

    def current_user
        if session[:user].blank?
            authenticate_or_request_with_http_basic do |user,pass|
                session[:user] = authenticated_user_or_nil
            end
        end
        session[:user]
    end
end

class UserSessionsController < ApplicationController
    prepend_before_filter :set_user_from_params

    private

    def set_user_from_params
        session[:user] = authenticated_user_or_nil
    end
end

両方にブレークポイントを設定します set_user_from_paramsset_current_user そして、彼らが実際に正しい順序で呼ばれていることを確認しました。

set_user_from_params 実際に設定しています session[:user] 正しく、しかし、私が続けて内部のブレークポイントを押したとき set_current_user セッションハッシュは空です!?

これは意図された行動ですか、それとも私は本当に明白なものを逃しましたか?

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top