有没有一种方法可以使用RubyonRails读取客户端的windows登录名
我已经在Windows上运行的RubyonRails上构建了一个intranet应用程序。将访问此应用的每个人都在Windows上运行,并且已使用Windows登录到网络 我需要做的就是获取登录用户的登录名,并将该登录名保存到会话变量中。我尝试了ENV['USERNAME'],但这只显示了登录服务器框的人,即我 有没有办法从访问该站点的用户那里自动获取并存储该变量?我知道我可以向他们索要,但我想一定有办法抓住它有没有一种方法可以使用RubyonRails读取客户端的windows登录名,ruby,windows,authentication,Ruby,Windows,Authentication,我已经在Windows上运行的RubyonRails上构建了一个intranet应用程序。将访问此应用的每个人都在Windows上运行,并且已使用Windows登录到网络 我需要做的就是获取登录用户的登录名,并将该登录名保存到会话变量中。我尝试了ENV['USERNAME'],但这只显示了登录服务器框的人,即我 有没有办法从访问该站点的用户那里自动获取并存储该变量?我知道我可以向他们索要,但我想一定有办法抓住它 谢谢…Chris不,您需要在rails应用程序中设置身份验证系统。在浏览器等许多系统
谢谢…Chris不,您需要在rails应用程序中设置身份验证系统。在浏览器等许多系统中,访问客户端环境将是一个巨大的安全漏洞。根据您的需求,rails有许多很好的插件来为您处理所有这些身份验证。我个人喜欢。它有几个插件,如果您不希望存储用户名/密码并让用户为您的intranet应用程序维护一组单独的登录凭据,则可以使用LDAP服务器进行身份验证。然而,这是很常见的。有一个声称的答案,但它只是IE。而且,由于浏览器确实不应该提供此类信息,这可能已经从IE的较新版本中删除了。这篇文章是从2008年底发布的,所以 尽管我非常讨厌IE和平台依赖性,但如果你被困在只支持Windows、只支持IE的企业内部网上,这可能是一条出路 希望这有帮助 PS:如果人们只是通过他们的工作机器访问你的应用程序,那么使用MAC/本地(桌面)IP地址怎么样?当然,MAC会更可靠,但这里也有同样的问题: 不管怎样,我只是在下面复制我自己的答案
这对我来说很有用,但也有一些局限性:
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身份验证”的第一个结果