Rails 3,Authlogic,NGINX和HTTP基本身份验证不能很好地协同工作

5
我正在使用Rails 3构建一款应用程序。用户认证由Authlogic提供支持,我已经按照标准设置好了它(如示例文档所述),在本地一切都按预期工作。
我将应用程序部署到了一个干净的Centos 5.4 / NginX / Passenger服务器上,以便员工可以开始登录并输入内容等。但是,我们离这个应用程序公开发布还有很长的路要走,因此我使用了NginX的基本身份验证模块来保护整个站点。
不幸的是,Authlogic的身份验证和NginX的基本身份验证似乎相互冲突。如果启用基本身份验证,则无法使用Authlogic登录,但是如果禁用基本身份验证,则Authlogic按预期工作。
我没有发布任何代码,因为我真的不确定哪些代码是相关的。我想知道这是否是一个已知的问题,是否有任何更改配置的方法来解决这个问题?
2个回答

13

通过几个小时在完全错误的地方搜索后,我可以回答自己的问题。对Authlogic::Session::Config进行良好的阅读解决了问题。

我可以回答自己的问题(在几个小时内寻找错误的地方后)。对Authlogic::Session::Config进行仔细阅读解决了我的问题。

class UserSession < Authlogic::Session::Base
  allow_http_basic_auth false
end

1
哇..太高兴了,我终于找到了解决这个问题的方法 - 我已经尝试了3天了。谢谢! - zaius
谢谢你!你是怎么发现这个的?文档真的很糟糕。 - PBJ

1

我还没有尝试过Rails 3,所以我的回答会更加通用。而且我不知道NginX的基本身份验证模块。

  1. 如果您的团队是本地连接的,则可以创建仅限本地网络访问的服务器。
  2. 如果您需要通过互联网访问,则可以将其隐藏在VPN后面。
  3. 您可以仅通过本地IP设置对站点进行访问,并为任何需要访问的人提供ssh访问权限。通过ssh很容易创建socks代理(在Linux中:ssh -D 8080 user@yourserver.com;其中8080是端口号,然后在浏览器中设置socks代理,您就可以启动yoursever.com:3000)。
  4. 我认为NginX允许您设置允许的IP和拒绝其他IP-因此您也可以将其用于访问限制。
  5. 您还可以暂时添加到ApplicationControllerbefore_filter :require_login :),这样只有登录页面才能向全世界提供服务。

希望这可以帮助!


感谢您的建议。最终我自己回答了我的问题。解决方案在文档中,只需要努力查找即可。 - aaronrussell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接