Rails获取当前登录的Windows用户的用户名

时间:2013-06-13 14:46:39

标签: ruby-on-rails ruby ruby-on-rails-3

我需要获取当前登录的Windows用户的用户名。可以轻松完成吗?

4 个答案:

答案 0 :(得分:3)

运行脚本的帐户的用户名可以通过以下方式访问:

puts ENV['USERNAME']

请注意,如果您将其作为系统服务运行,则用户名可能会以“SYSTEM”身份返回

如果这还不足以满足您的需求,可以使用此处列出的替代方法:https://stackoverflow.com/a/3544741/648695

答案 1 :(得分:2)

您可以使用Ruby etc模块

require 'etc'
Etc.getlogin

这里的文档是可用的:http://ruby-doc.org/stdlib-2.0.0/libdoc/etc/rdoc/Etc.html#method-c-getlogin

返回当前登录用户的简短用户名。

答案 2 :(得分:0)

据我所知,除非你使用的是需要微软框架网站的活动目录,否则我认为你不会在rails中找到方法。

这里有一些讨论点可能会有所帮助:Can you get a Windows (AD) username in PHP?

答案 3 :(得分:0)

同样的问题:is there a way to read a clients windows login name using ruby on rails

无论如何,只是在下面复制我自己的答案......

这对我有用,但有一些限制:

如果您不关心这些问题,请继续:

  1. 在您的rails应用程序中,将Rekado的gem添加到您的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"]以获取当前用户名。

  5. PS:如果您发现无论如何都要在Chrome上运行或验证用户凭据,请与我们联系。