2016-06-18 19 views
0

如何将基本身份验证添加到Rails网站的根目录?在开发中,我希望它出现在localhost:3000;我能够将基本身份验证添加到适用于所有控制器方法的应用程序控制器;但是,我还想要为网站的根目录强制执行基本身份验证(无需将根重定向到受保护的页面)。向Rails默认网站的根目录添加基本身份验证

在application_controller.rb,我现在有以下几点:

class ApplicationController < ActionController::Base 
    http_basic_authenticate_with name: ENV["USER_NAME"], password: ENV["PASSWORD"] if ENV["USER_NAME"].present? 


    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 
    protect_from_forgery with: :exception 
end 
+0

你是什么意思“还想基本身份验证强制为网站的根”?您已将基本身份验证添加到应用程序控制器,该应用程序控制器会将auth添加到整个网站 –

+0

不起作用,只保护控制器方法,除了它的工作原理 – user1322092

+0

,不知道为什么它不适合你。 – Saad

回答

0

我猜你没有根在你的routes.rb文件中设置。尝试将其添加到路由文件中,并且您将在所有路径上进行身份验证。

root "your_controller#some_action" 

你可以阅读更多关于它在这里:http://docs.railsbridge.org/intro-to-rails/setting_the_default_page

+0

你说得对,但并没有解决我的问题。我不想将该人重定向到我尝试保护的页面(从安全设置中删除隐藏)。 – user1322092

+0

您在应用程序控制器中具有身份验证设置,为了解决这个问题,您需要先通过控制器。如果你想在不通过控制器的情况下进行身份验证,则需要使用不同类型的身份验证,也许可以查看设计。 –

+0

@ user1322092,请注意,当您在路由文件中使用root时,url栏中的路径将为localhost:3000 /,它不会显示您尝试保持私密的路径 –

0

至于你说:

我能够基本身份验证添加到应用程序控制器,它适用于所有控制器的方法。

我怀疑你有控制器#方法路由到根路径,所以当你发送一个请求到localhost:3000你不会触发任何动作,那么在这种情况下没有任何东西会被你的基本认证处理。

+0

您是对的,但这并不能解决我的问题问题。我不想重定向到我尝试保护的页面(网站上只有1页)。是的,我可以创建一个虚拟页面...仍然想看看是否有可能。 – user1322092