Authentication Rails 3检查是否在所有与regex匹配的路由上登录?

Authentication Rails 3检查是否在所有与regex匹配的路由上登录?,authentication,ruby-on-rails-3.2,Authentication,Ruby On Rails 3.2,假设我有一大堆路由,我只希望登录用户可以访问这些路由。我可以检查每一个控制器方法,这些方法都是按照 if signed_in? #do stuff here else redirect_to root_path 我想我也可以在控制器中使用前置过滤器,以减少重写该过滤器的次数(尽管我现在还不太熟悉语法)。然而,我理想的情况是将其写在一个地方,即所有与某个正则表达式匹配的路由都需要通过此检查,例如,所有形式为www.mysite.com/admin/…的路由都需要此验证检查。有没有

假设我有一大堆路由,我只希望登录用户可以访问这些路由。我可以检查每一个控制器方法,这些方法都是按照

if signed_in?
    #do stuff here
else
    redirect_to root_path

我想我也可以在控制器中使用
前置过滤器
,以减少重写该过滤器的次数(尽管我现在还不太熟悉语法)。然而,我理想的情况是将其写在一个地方,即所有与某个正则表达式匹配的路由都需要通过此检查,例如,所有形式为
www.mysite.com/admin/…
的路由都需要此验证检查。有没有办法做到这一点,这样我只需写一次检查,而不必在我的控制器上重复代码?

我找到一篇文章,展示了如何在控制器中获取当前URL:

现在,您可以在
ApplicationController
中编写一个方法,检查URL是否以
/admin
开头,并验证用户是否已登录。在
ApplicationController
过滤器之前调用该方法。现在,每个请求之前都会调用此方法,但由于您首先检查正则表达式,因此它不会对不以
/admin
开头的页面产生任何影响

它可能看起来与此类似:

class ApplicationController < ActionController::Base
  before_filter :check_login_if_admin_route

  def check_login_if_admin_route
    current_uri = request.env['PATH_INFO']
    if !current_uri.start_with?('/admin')
      redirect_to root_path
    end
  end
end
class ApplicationController