我需要获取当前登录的 windows 用户的用户名。能轻松完成吗?
4 回答
可以通过以下方式访问运行脚本的帐户的用户名:
puts ENV['USERNAME']
请注意,如果您将其作为系统服务运行,则用户名可能会返回为“SYSTEM”
如果这还不足以满足您的需求,这里列出了另一种方法:https ://stackoverflow.com/a/3544741/648695
您可以使用 Rubyetc
模块
require 'etc'
Etc.getlogin
该文档可在此处获得:http ://ruby-doc.org/stdlib-2.0.0/libdoc/etc/rdoc/Etc.html#method-c-getlogin
返回当前登录用户的短用户名。
据我所知,除非您使用需要微软框架网站的活动目录,否则我认为您不会在 Rails 中找到方法。
这里有一些讨论点可能会有所帮助:你能在 PHP 中获得一个 Windows (AD) 用户名吗?
同样的问题:有没有办法使用 ruby on rails 读取客户端的 Windows 登录名
无论如何,只需在下面复制我自己的答案......
这对我有用,但有一些限制:
如果您不关心这些问题,请继续:
在您的 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 上运行或验证用户凭据的方法。