有没有一种方法可以使用RubyonRails读取客户端的windows登录名

有没有一种方法可以使用RubyonRails读取客户端的windows登录名,ruby,windows,authentication,Ruby,Windows,Authentication,我已经在Windows上运行的RubyonRails上构建了一个intranet应用程序。将访问此应用的每个人都在Windows上运行,并且已使用Windows登录到网络 我需要做的就是获取登录用户的登录名,并将该登录名保存到会话变量中。我尝试了ENV['USERNAME'],但这只显示了登录服务器框的人,即我 有没有办法从访问该站点的用户那里自动获取并存储该变量?我知道我可以向他们索要,但我想一定有办法抓住它 谢谢…Chris不,您需要在rails应用程序中设置身份验证系统。在浏览器等许多系统

我已经在Windows上运行的RubyonRails上构建了一个intranet应用程序。将访问此应用的每个人都在Windows上运行,并且已使用Windows登录到网络

我需要做的就是获取登录用户的登录名,并将该登录名保存到会话变量中。我尝试了ENV['USERNAME'],但这只显示了登录服务器框的人,即我

有没有办法从访问该站点的用户那里自动获取并存储该变量?我知道我可以向他们索要,但我想一定有办法抓住它


谢谢…Chris

不,您需要在rails应用程序中设置身份验证系统。在浏览器等许多系统中,访问客户端环境将是一个巨大的安全漏洞。根据您的需求,rails有许多很好的插件来为您处理所有这些身份验证。我个人喜欢。它有几个插件,如果您不希望存储用户名/密码并让用户为您的intranet应用程序维护一组单独的登录凭据,则可以使用LDAP服务器进行身份验证。然而,这是很常见的。

有一个声称的答案,但它只是IE。而且,由于浏览器确实不应该提供此类信息,这可能已经从IE的较新版本中删除了。这篇文章是从2008年底发布的,所以

尽管我非常讨厌IE和平台依赖性,但如果你被困在只支持Windows、只支持IE的企业内部网上,这可能是一条出路

希望这有帮助

PS:如果人们只是通过他们的工作机器访问你的应用程序,那么使用MAC/本地(桌面)IP地址怎么样?当然,MAC会更可靠,但这里也有同样的问题:

不管怎样,我只是在下面复制我自己的答案


这对我来说很有用,但也有一些局限性:

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

  • 在rails应用程序中,将Rekado的gem添加到gem文件:
    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上运行或验证用户凭据,请告诉我。

    所以没有办法绕过登录?我必须要一个?那么单点登录在所有这些系统上是如何工作的呢?这不是我真正做过的事情,但你要找的是“NTLM身份验证”。把它插入谷歌可能会给你一些想法。e、 g.是“rails ntlm身份验证”的第一个结果