2009-12-06 2 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} 
    
  • Наконец, где-то в админ представления добавляют кнопку каждому пользователю под названием «Олицетворение». Он должен будет выглядеть следующим образом (при условии, что пользователь находится в локальной переменной user):

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

Используя этот подход, вы также избежать отвергая любые данные отслеживания, например, время последнего входа в систему, и т.д.

PS Не забудьте потребовать администратора для impersonate действия в контроллере сессий.

0

Просто переопределите session[:user_id] с идентификатором пользователя, которым вы хотите быть. Один простой способ - войти в систему как администратор, а затем дать им раскрывающийся список имен пользователей. Когда они отправят форму, установите контроллер session[:user_id], а затем перезагрузите current_user. Затем администратор «станет» этим пользователем.

Смежные вопросы