在Ruby中,如何将控制器中的方法限制为特定用户?

时间:2011-02-06 13:15:12

标签: ruby-on-rails

在Ruby on Rails中,是否有一种标准方法可以将控制器中的某些方法限制为已登录的用户或具有特定权限的用户?让我们说为了简单起见我有一个博客,我希望每个人都能够访问我的控制器中的“列表”和“显示”方法,但我只希望登录用户访问“编辑”,“更新”, “创造”等方法。我是否必须将逻辑或至少一个函数调用编程到这些函数中的每一个以检查用户访问权限,还是有更正式的方式?

3 个答案:

答案 0 :(得分:4)

您可以使用before_filter

Class blogController
before_filter :authorize, :except => [:list, :show]

def authorize
    #Your code to get a logged in user
    redirect_to blog_path unless user
end

答案 1 :(得分:2)

这称为Before filter

E.g。

PostsController < ApplicationController
   before_filter :authenticate_admin!, :only => [:index, :show]

答案 2 :(得分:1)

查看Devise,特别是Devise Wiki,了解您的问题的一些示例。这将有助于登录和身份验证。另请查看CanCan。这将有助于授权。

使用Devise,您可以允许每个人访问“索引”(列表)和“显示”操作,并使用博客/帖子控制器顶部的以下行限制人员使用其他操作。

 before_filter :authenticate_user! :except=>[:index, :show]