【问题标题】:Rails 3, Authlogic, NGINX and HTTP basic authentication no working nicely togetherRails 3、Authlogic、NGINX 和 HTTP 基本身份验证不能很好地协同工作
【发布时间】:2010-05-17 17:42:14
【问题描述】:

我正处于使用 Rails 3 构建应用程序的早期阶段。用户身份验证由 Authlogic 提供支持,我已将其设置为标准 (as per the example docs),并且在本地一切正常。

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

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

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

【问题讨论】:

    标签: ruby-on-rails nginx authlogic basic-authentication


    【解决方案1】:

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

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

    【讨论】:

    • 哇.. 很高兴我发现了这个 - 我已经尝试解决这个问题大约 3 天了。谢谢!
    • 谢谢!你是怎么发现的?文档真的很烂。
    【解决方案2】:

    我还没有尝试 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 并拒绝其他 IP - 因此您也可以将其用于访问限制。
    5. 你也可以临时添加到ApplicationController before_filter :require_login :),所以全世界只有登录页面可用。

    希望对你有帮助!

    【讨论】:

    • 感谢您的建议。最后我已经回答了我自己的问题。解决方案在文档中,只需要仔细查看即可。
    猜你喜欢
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多