5

我正处于使用 Rails 3 构建应用程序的早期阶段。用户身份验证由 Authlogic 提供支持,我已将其设置为标准(根据示例文档)并且一切都按预期在本地工作。

我刚刚将该应用程序部署到 Centos 5.4/NginX/Passenger 的干净服务器安装上,以便工作人员可以开始登录并输入内容等。但是,我们距离为公众做好准备还有很长的路要走,所以我使用了NginX 的基本身份验证模块,用于将整个站点保持在另一个级别的身份验证之后。

不幸的是,Authlogic 的身份验证和 NginX 的基本身份验证似乎相互冲突。如果基本身份验证已打开,则无法使用 Authlogic 登录,但如果我禁用基本身份验证,则 Authlogic 会按预期工作。

我没有发布任何代码,因为我真的不确定哪些代码是相关的。我想知道这是否是一个已知问题,是否可以对配置进行任何更改以解决该问题?

4

2 回答 2

13

我可以回答我自己的问题(经过几个小时完全看错了地方)。一个好的阅读就Authlogic::Session::Config可以了。

class UserSession < Authlogic::Session::Base
  allow_http_basic_auth false
end
于 2010-05-17T20:52:07.327 回答
1

我仍然没有尝试 Rails 3,所以我的回答会更笼统。而且我不知道 NginX 的基本身份验证模块。

  1. 如果您的团队在本地连接,那么您可以创建只能从本地网络访问的服务器。
  2. 如果您需要通过 Internet 访问,则可以将其隐藏在 VPN 后面。
  3. 您可以仅通过本地 ip 设置对站点的访问权限,并将 ssh 访问权限授予需要它的任何人。通过 ssh 创建 socks 代理很容易(在 linux 中:ssh -D 8080 user@yourserver.com;其中 8080 是端口号,然后在浏览器中设置 socks 代理,您可以午餐 yoursever.com:3000)。
  4. 我认为 NginX 允许您设置允许的 IP 并拒绝其他 - 所以您也可以使用它来限制访问。
  5. 而且您也可以临时添加到ApplicationController before_filter :require_login:),因此只有登录页面可供全世界使用。

希望能帮助到你!

于 2010-05-17T18:05:34.127 回答