将某些路由限制为登录用户

时间:2011-09-15 06:56:28

标签: ruby-on-rails ruby-on-rails-3 authentication

我想/只有登录用户可以访问的内容,我有一个current_user帮助器,如果当前访问者没有登录,则返回用户ID或nil。

哪里是限制访问控制器中某些内容的最佳位置,还是可以作为路径的一部分添加?

2 个答案:

答案 0 :(得分:4)

您应该在控制器中处理它。路线决定事情的进展,然后由控制人决定是否允许你去那里。

您的ApplicationController中应该有一个通用的authenticate方法,用于检查某人是否已登录,如果不是,则将其重定向到登录页面。然后在您的特定控制器中:

class SomethingController < ApplicationController
  before_filter :authenticate

  def handler
    #...
  end
end

您可以使用:except选项跳过特定处理的身份验证:

before_filter :authenticate, :except => [ :this_one, :and_this_one ]

还有其他选项,请参阅Action Controller Overview的过滤器部分了解详情。

答案 1 :(得分:4)

您必须添加控制器:before_filter并为其创建操作。

:before_filter :authenticate 

def authenticate
  redirect_to(registration_path) unless current_user.nil?
end

您还可以使用:only或:除过滤器选项。 或者我没有明白的问题?