在亚马逊弹性豆茎上设计导轨需要双重注销

时间:2015-01-12 18:40:23

标签: ruby-on-rails amazon-web-services devise dns elastic-beanstalk

应用程序在亚马逊弹性beanstalk上运行 Rails 4.2.0 设计3.4.1 。当用户登录时,他们会获得相应的

  

成功登记。

消息...但“已成功登录。”会在网站上查看的每个后续页面上重复。

然后当用户访问/users/sign_out时,他们仍然会获得“已成功签名。”闪存消息并保持登录状态。

但现在浏览网站会在用户登录后正常运行。

成功退出网站需要第二次访问/users/sign_out

此问题与生产环境隔离。所以我认为这与围绕 AWS Elastic Beanstalk DNS 问题有关。我在过去尝试在弹性beanstalk 上设置 cookies 时遇到了一些问题,其中亚马逊为我分配了一个名称,如 http://app-name.elasticbeanstalk .com / 然后DNS将此设置为 http://app-name.ourdomain.com/

这可能是_app / controllers / application_controller.rb_中的一个问题:

class ApplicationController < ActionController::Base
  protect_from_forgery

  ...

  def default_url_options
    if Rails.env.production?
      {:host => "app-name.ourdomain.com"}
    else  
      {}
    end
  end

  ...

end

这已添加到应用程序控制器中,以便 Rails 在构造URL时使用正确的主机名。如果没有这个,Rails会使用 http://app-name.elasticbeanstalk.com/

构建所有网址

但是,如果这与 config / environments / production.rb 文件有关,我将其投入:

Rails.application.configure do

  config.cache_classes = true

  config.eager_load = true

  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  config.serve_static_files = false

  config.assets.js_compressor = :uglifier

  config.assets.compress = true

  config.assets.compile = true

  config.assets.digest = true

  Fog.credentials = { :path_style => true }
  config.action_controller.asset_host = "//assets.host.com"
  config.assets.prefix = "/admin"

  config.log_level = :debug

  config.i18n.fallbacks = true

  config.active_support.deprecation = :notify

  config.log_formatter = ::Logger::Formatter.new

end

0 个答案:

没有答案