如何使用设计保护对受限制页面的访问

时间:2014-11-04 20:55:42

标签: ruby-on-rails ruby-on-rails-4 devise restriction before-filter

我想将对某些页面的访问权限限制为仅记录用户。

这些页面的属性为“area = restricted”。

所以在我的控制器中,我将访问权限限制如下:

before_action find_page # Where we instantiate @page
before_action authenticate_user! only: [:show], :if => :restricted? , :unless => :logged_in?

在控制器中我越远

def restricted?
  @page.area == "restricted" ? true : false
end

def logged_in?
  current_user ? true : false
end

但出于某种原因,它没有工作......

您是否在代码中看到了明显的内容?

谢谢!

更新:

我通过将两个条件混合到一个方法中来简化上面的代码,如下所示:

before_action find_page # Where we instantiate @page
before_action authenticate_user!, only: [:show], :if => :must_be_authenticated

我的方法定义如下

def must_be_authenticated
  puts "must_be_athenticated call"
  return false if @page.area != "restricted" # If the area is not restricted no need for athentication
  return false if user_signed_in? # If user is signed_in no need for athentication
  return true 
end

问题仍然存在,甚至字符串" must_be_athenticated call"没有写在日志中。所以似乎before_action :authenticate_user!, :if => :must_be_authenticated被忽略了,因为在调试字符串的日志中没有打印出来,页面也没有被限制......

更新:

show方法定义如下:

def show
  authorize! :show, @page
  render template: "pages/show"
end

0 个答案:

没有答案