使用'before_filter'进行身份验证

时间:2011-09-05 18:30:54

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

我正在试图找出before_filters,我希望得到一些帮助。

我有一个简单的博客应用程序,可以是(草稿或发布)和(公共或私人)条目。我想知道如何进行身份验证?

我目前有:

before_filter :authenticate, :except => [ :show ]

这样可以阻止所有CRUD操作。对于show,我需要检查:

  1. 如果是草稿,则登录用户拥有该条目。
  2. 如果是私有的,则用户已登录(在此,所有登录的用户都可以看到私人条目)
  3. 我可以在动作本身内完成,但似乎 rails 这样做的方式是before_filter

    谢谢!

1 个答案:

答案 0 :(得分:1)

在前过滤器中执行此操作。如果您正在使用devise,那么如果用户已登录,则current_user方法可用。否则,将current_user替换为authenticate方法返回的值。

def find_post
  @post = Post.find(params[:id])
  redirect_to root_path if @post.draft && @post.user != current_user
  redirect_to root_path if @post.private && !current_user
end