Есть ли способ прочитать имя пользователя Windows, используя ruby ​​на рельсах - PullRequest
3 голосов
/ 01 апреля 2011

Я создал приложение для интрасети на Ruby on Rails, работающее под Windows.Все, кто получит доступ к этому приложению, работают в Windows и уже вошли в сеть с Windows.

Все, что мне нужно сделать, - это получить имя для входа вошедшего в систему пользователя и сохранить это имя для входа в переменную сеанса.Я пробовал ENV ['USERNAME'], но это показывает только человека, который вошел в серверную коробку, а это я.

Есть ли способ автоматически получить и сохранить эту переменную от пользователей, которые имеют доступ к сайту?Я знаю, что могу попросить их об этом, но я предполагаю, что должен быть какой-то способ схватить его.

Спасибо ... Крис

Ответы [ 3 ]

1 голос
/ 01 апреля 2011

Этот сайт имеет предполагаемый ответ, но только для IE. А поскольку браузеры действительно не должны предоставлять такую ​​информацию, возможно, она была удалена из более новых версий IE. Пост с конца 2008 года, так что ...

Как бы я ни ненавидел IE и зависимость от платформы, если вы все равно застряли в корпоративной интрасети только для Windows, только для IE, это может быть путь.

Надеюсь, это поможет!

PS: Если люди будут просто получать доступ к вашему приложению через свои рабочие машины, как насчет использования MAC / локальных (настольных) IP-адресов? Конечно, MAC будет более надежным, но он и IE только ...

1 голос
/ 01 апреля 2011

Нет, вам нужно настроить систему аутентификации в вашем приложении rails.Доступ к клиентской среде был бы серьезным нарушением безопасности в ряде систем, таких как браузер.В зависимости от ваших требований, есть несколько хороших плагинов для рельсов, которые справятся со всей этой аутентификацией для вас.Мне лично нравится devise .Для этого есть несколько плагинов, один из которых будет аутентифицироваться на сервере LDAP, если вы не хотите хранить имя пользователя / пароли и заставлять пользователей поддерживать отдельный набор учетных данных для входа в приложение интрасети.Это, однако, очень распространено.

0 голосов
/ 16 июня 2015

Тот же вопрос здесь: Rails получает имя пользователя текущего пользователя Windows

В любом случае, просто скопирую свой ответ ниже ...


Это то, что сработало для меня, но есть некоторые ограничения:

Если вас не волнуют эти проблемы, продолжайте:

  1. В вашем приложении rails добавьте драгоценный камень Rekado в свой Gemfile: gem 'ntlm-sso', '=0.0.1'

  2. Создать инициализатор config/initializers/ntlm-sso.rb с:

    require 'rack'
    require 'rack/auth/ntlm-sso'
    
    class NTLMAuthentication
      def initialize(app)
        @app = app
      end
    
      def call(env)
        auth = Rack::Auth::NTLMSSO.new(@app)
        return auth.call(env)
      end
    end
    
  3. В вашем файле application.rb добавьте строку: config.middleware.use "NTLMAuthentication"

  4. Вызовите request.env["REMOTE_USER"] на вашем экране или контроллере, чтобы получить текущее имя пользователя.

PS: Дайте мне знать, если вы все равно найдете, чтобы он работал на Chrome или подтвердил учетные данные пользователя.

...