我需要获取当前登录的Windows用户的用户名。可以轻松完成吗?
答案 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
无论如何,只是在下面复制我自己的答案......
这对我有用,但有一些限制:
如果您不关心这些问题,请继续:
在您的rails应用程序中,将Rekado的gem添加到您的Gemfile:gem 'ntlm-sso', '=0.0.1'
使用以下内容创建初始化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
在application.rb
文件上添加以下行:config.middleware.use "NTLMAuthentication"
在您的视图或控制器上调用request.env["REMOTE_USER"]
以获取当前用户名。
PS:如果您发现无论如何都要在Chrome上运行或验证用户凭据,请与我们联系。