2009-12-06 106 views
1

我使用的是Restful Authentication,我希望能夠以我們網站上的不同用戶身份登錄,以調查他們可能遇到的問題(請參閱他們看到的內容)。由於所有密碼都是經過加密的,我顯然不能只使用他們的密碼。強制靜默認證以特定用戶身份登錄(管理員功能)?

那麼,我該如何強制一個會話作爲特定用戶登錄?

回答

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):

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

使用這種方法還能避免重寫任何跟蹤數據,如上次登錄時間等

PS不要忘記在會話控制器中需要管理員impersonate操作。

0

簡單地覆蓋session[:user_id]與你想要的用戶的ID。一種簡單的方法是讓用戶以管理員身份登錄,然後爲用戶提供一個用戶名下拉菜單。當他們提交表格時,請讓控制器設置session[:user_id],然後重新加載current_user。管理員將會'成爲'該用戶。

相關問題