1

私は Restful 認証を使用しており、サイトに別のユーザーとしてログインして、問題を調査できるようにしたいと考えています (「表示される内容を参照してください」)。すべてのパスワードは暗号化されているため、パスワードをそのまま使用することはできません。

では、特定のユーザーとしてセッションにログインさせるにはどうすればよいでしょうか?

4

2 に答える 2

3
  • 次のようなsessions_controller追加アクションimpersonateで:

    def impersonate
      user = User.find(params[:id])
      logout_killing_session!
      self.current_user = user
      flash[:notice] = t(:logged_in)
      redirect_to root_url
    end
    
  • 次に、ルートでメンバーを使用してセッション リソースを拡張しますimpersonate

    map.resource :session, :member => {:impersonate => :post}
    
  • 最後に、管理ビューのどこかに「Impersonate」というボタンを各ユーザーに追加します。次のようにする必要があります ( user が local variable にあると仮定しますuser):

    <%= button_to "Impersonate", impersonate_session_path(:id => user.id) %>
    

このアプローチを使用すると、最終ログイン時刻などの追跡データをオーバーライドすることも回避できます。

impersonatePSセッションコントローラーでのアクションに管理者を要求することを忘れないでください。

于 2009-12-06T16:39:18.120 に答える
0

session[:user_id]なりたいユーザーのIDで上書きするだけです。簡単な方法の1つは、ユーザーに管理者としてログインさせてから、ユーザー名のドロップダウンを提供することです。フォームを送信したら、コントローラーを設定session[:user_id]してからリロードしcurrent_userます。その後、管理者はそのユーザーに「なります」。

于 2009-12-06T16:01:29.663 に答える