rails 4 multisite http_basic_authenticate_with

时间:2015-11-24 20:57:01

标签: ruby-on-rails ruby-on-rails-4 authentication heroku http-basic-authentication

现在已经尝试解决这个问题6个小时了。希望有人能指出这一点。我有一个代码库在heroku上运行多个应用程序。有些应用已拥有自己的域名。我已经在使用主机为每个正常工作的应用程序设置区域设置。见下文。但是,对每个主机进行身份验证(隐藏公开的非就绪应用程序)不起作用。

在应用程序控制器中设置区域设置 - 运行良好:

<div class="container">
  <div class="row">
    <h2 style="text-align: center;">Powerful Purpose</h2>
    <div class="" style="width:70%;margin:0 auto;">
    <ul class="nav nav-tabs tabs-up " id="mainNavTabs" style="text-align: center;">
      <li><a href="about.php" data-target="#aboutus" class="media_node active span" id="aboutus_tab" data-toggle="tabajax" rel="tooltip">About The ADRC</a></li>
      <li><a href="participants.php" data-target="#participants" class="media_node span" id="participants_tab" data-toggle="tabajax" rel="tooltip"> Participants / Researchers</a></li>
      <li><a href="researcher.php" data-target="#researcher" class="media_node span" id="researcher_tab" data-toggle="tabajax" rel="tooltip">Scientists / Researchers</a></li>
       <li><a href="healthcare.php" data-target="#healthcare" class="media_node span" id="healthcare_tab" data-toggle="tabajax" rel="tooltip">Healthcares providers</a></li>
    </ul>
    </div>
    <div class="tab-content">
        <div class="tab-pane active" id="aboutus"> </div>
        <div class="tab-pane" id="participants"> </div>
        <div class="tab-pane " id="researcher"></div>
        <div class="tab-pane " id="healthcare"></div>
    </div>
  </div><!--/row-->
</div><!--/container-->

现在我的主页是'static_pages #home'所以我首先想到我把方法放在static_pages_controller中但是没有用,所以我甚至尝试了application_controller。甚至尝试为每个环境设置默认URL(在application_controller中)但是没有运气(more here)。哦,是的,我试图限制每个环境没有运气。所以我尝试了几个版本,这是application_controller中的那个(给出nomethod错误):

before_filter :extract_locale_from_domain

def extract_locale_from_domain
 domain = request.host
 if domain == 'www.domain.hu'
  I18n.locale = :'hu'
 elsif domain == 'www.domain.com'
  I18n.locale = :'en-US'
 else
  I18n.locale = :'en-US'
 end
end

这给出了错误:

before_filter :authenticate

def authenticate
 domain = request.host
 if domain == 'www.domain.hu'
  http_basic_authenticate_with name: "stuff", password: "boda"
 elsif domain == 'www.domain.com'
  http_basic_authenticate_with name: "stuff", password: "boda"
 else
 end
end

TIA!

2 个答案:

答案 0 :(得分:1)

这是有用的:

在应用控制器中:

var d1 = new Date("2015-11-22"); // start date  
var warranty_value = 24; // warranty value
d1.setMonth(d1.getMonth() + warranty_value); // this will give you end date by adding warranty value to start date

答案 1 :(得分:0)

NoMethodError (undefined method `http_basic_authenticate_with' for #    
< StaticPagesController:0x000000090d8de8 >)

这意味着它无法在http_basic_authenticate_with实例上找到StaticPagesController方法。

尝试在控制器中加入ActionController::HttpAuthentication::BasicActionController::HttpAuthentication::Basic::ControllerMethods模块,然后再次尝试使用http_basic_authenticate_with方法。