1


0

declarative_authorizationおよびauthlogicを使用したcurrent_userの決定

authlogicを使用してユーザーを認証します。 私のコントローラーでは、次のように(文書化されているように)定義されたcurrent_userを使用します。

  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.record
  end

また、declarative_authorizationを使用して、現在のユーザーの権限を管理します。 通常のランタイムシナリオではすべて正常に動作しますが、「get_with」などのリクエストステートメントを使用する機能テストを作成する場合、コントローラーのcurrent_userはnilです。 declarative_authorizationテストヘルパーコードを調べたところ、このシナリオでは、declarative_authorization gemが実際に現在のユーザーをAuthorization.current_user(Thread.current ["current_user"]から取得)に格納していることがわかりました。 そのため、現在のユーザーがさまざまなシナリオでどのように処理されるかについて、かなり混乱しているようです。

私の質問:通常のランタイムとテストシナリオの両方でcurrent_userを見つける適切な方法は何ですか?

2 Answer


0


application_controllerでこのようなbefore_filterを定義できます。

before_filter \ {| c | Authorization.current_user = c.current_user}


0


アンジェラス、あなたは正しかった。 get_with、post_withなどを使用しないでください。 これらはAuthorization.current_user、session [:user]、session [:user_id]を設定するだけで、authlogicでは廃止されているようです。 そして何らかの理由で、これらはUserSessionをnilに設定し、問題を引き起こしていました。 したがって、UserSession.create(users(:admin))に続いて、通常のget、postなどが続きます。 行く方法です。