Ruby on rails Rails-让远程用户从apache返回用户名
我环顾了很多地方,确实找到了一些关于这个话题的信息,但没能让它发挥作用。我在公司的Web服务器上安装了apache/tomcat。以前在同一个Web服务器上,当我编写CGI应用程序时,通过访问environment var REMOTE_USER,我成功地获得了网站访问者的用户名。现在我使用rails,变量request.env['REMOTE_USER']不返回任何内容 请注意,我不是运行许多在线讨论假设的Mongrel。另外,我并不想构建一个身份验证系统,我只是想读入(使用远程用户)访问我的站点的用户的用户名 我知道我需要调整我的.htaccess(位于我的公用文件夹中)文件,以便将这些信息从apache转发到我的应用程序中。通过查看web上的示例,我确实将其更改为Ruby on rails Rails-让远程用户从apache返回用户名,ruby-on-rails,apache,Ruby On Rails,Apache,我环顾了很多地方,确实找到了一些关于这个话题的信息,但没能让它发挥作用。我在公司的Web服务器上安装了apache/tomcat。以前在同一个Web服务器上,当我编写CGI应用程序时,通过访问environment var REMOTE_USER,我成功地获得了网站访问者的用户名。现在我使用rails,变量request.env['REMOTE_USER']不返回任何内容 请注意,我不是运行许多在线讨论假设的Mongrel。另外,我并不想构建一个身份验证系统,我只是想读入(使用远程用户)访问我的
RewriteCond %{REMOTE_USER} (.+)
RewriteRule ^.*$ - [E=RU:%1]
RequestHeader add X-Forwarded-User %{RU}e
…但这没用。谢谢。如果添加X-Forwarded-User,则必须读取request.headers['X-Forwarded-User'],而不是request.env['REMOTE\u User'] 将其放入下面的文件中,并使用http_remote_user而不是request.env散列
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
def http_remote_user
request.env['HTTP_REMOTE_USER'] || request.headers['X-Forwarded-User']
end
helper_method :http_remote_user
end
#app/controllers/application_controller.rb
类ApplicationController
我努力解决这个问题,但最终还是成功了
RewriteEngine On
添加到conf文件中(对我来说,它位于VirtualHost
部分),我忘记了,它以静默方式失败,重新启动apache时没有错误RewriteCond%{LA-U:REMOTE_USER}(+)
RequestHeader add X-Forwarded-User'FixedValue'
开始,以确保问题不是apache rails或其他中间产品谢谢你回来@squarsim。将代码粘贴到我的应用程序控制器中,在我看来,我尝试了打印这两个代码,但仍然得到了空白。也许我需要在我的.htaccess?打印输出中添加/更改一些内容,这将是rails可以使用的完整标题集,如果您没有看到,则apache端缺少一些内容。Printed request.headers并获得了一页信息。但输出中缺少远程用户。这是否意味着我需要从Apache端启用?如果Apache看到REMOTE_USER=bob,而您在request.headers中的任何位置都看不到bob,那么Apache不会转发任何内容,rails对此也无能为力。是的,我会玩.htaccess文件。