私は Restful 認証を使用しており、サイトに別のユーザーとしてログインして、問題を調査できるようにしたいと考えています (「表示される内容を参照してください」)。すべてのパスワードは暗号化されているため、パスワードをそのまま使用することはできません。
では、特定のユーザーとしてセッションにログインさせるにはどうすればよいでしょうか?
私は Restful 認証を使用しており、サイトに別のユーザーとしてログインして、問題を調査できるようにしたいと考えています (「表示される内容を参照してください」)。すべてのパスワードは暗号化されているため、パスワードをそのまま使用することはできません。
では、特定のユーザーとしてセッションにログインさせるにはどうすればよいでしょうか?
次のような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) %>
このアプローチを使用すると、最終ログイン時刻などの追跡データをオーバーライドすることも回避できます。
impersonate
PSセッションコントローラーでのアクションに管理者を要求することを忘れないでください。
session[:user_id]
なりたいユーザーのIDで上書きするだけです。簡単な方法の1つは、ユーザーに管理者としてログインさせてから、ユーザー名のドロップダウンを提供することです。フォームを送信したら、コントローラーを設定session[:user_id]
してからリロードしcurrent_user
ます。その後、管理者はそのユーザーに「なります」。