Rails - получение remote_user для возврата имени пользователя из apache - PullRequest
1 голос
/ 05 октября 2011

Я немного осмотрелся и нашел некоторую информацию по теме, но не смог заставить ее работать.На моем веб-сервере в моей компании установлен apache / tomcat.Ранее на том же веб-сервере, когда я писал CGI-приложения, я успешно смог получить имя пользователя на моем сайте, используя переменную окружения REMOTE_USER.Теперь, когда я еду по рельсам, переменная request.env ['REMOTE_USER'] ничего не возвращает.

Обратите внимание, что я не запускаю Mongrel, как предполагают многие онлайн-обсуждения.Кроме того, я не собираюсь создавать систему аутентификации, я просто хочу прочитать (используя REMOTE_USER) имя пользователя людей, которые заходят на мой сайт.

Я знаю, что мне нужноНастройте мой файл .htaccess (находится в моей общей папке), чтобы переслать эту информацию из apache в мое приложение.Просматривая примеры в Интернете, я изменил его на ..

RewriteCond %{REMOTE_USER} (.+)
RewriteRule ^.*$ - [E=RU:%1]
RequestHeader add X-Forwarded-User %{RU}e

.. но это не помогло.Спасибо.

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

Если вы добавляете X-Forwarded-User, вы должны прочитать request.headers ['X-Forwarded-User'], а не request.env ['REMOTE_USER'].

Поместите это в файл ниже и используйте http_remote_user вместо хэша request.env.

# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  def http_remote_user
    request.env['HTTP_REMOTE_USER'] || request.headers['X-Forwarded-User']
  end
  helper_method :http_remote_user
end
0 голосов
/ 06 ноября 2014

Я боролся с этим, но, наконец, все заработало.

  1. Убедитесь, что вы не забыли добавить RewriteEngine On в файл conf (для меня это было внутри VirtualHostраздел), я забыл, и это молча провалилось, никаких ошибок при перезапуске apache.

  2. В зависимости от того, используете ли вы файл .htaccess или .conf, вам нужно изменить правило RewriteCond, эзотерические подробности - примечание 5 означает, что нам нужно использовать RewriteCond %{LA-U:REMOTE_USER} (.+), если мы находимся внутри файла conf.

  3. Чтобы помочь в отладке, вы всегда можете начать с использованияRequestHeader add X-Forwarded-User 'FixedValue' чтобы убедиться, что проблема в apache, а не в rails или других промежуточных соединениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...