有条件的使用filter

使用filter进行权限控制,是rails的一个特点。

我们在使用filter的时候,通常是结合使用authentication插件。
1.在需要使用登录验证的地方都会按照如下方式使用:

before_filter :login_required
 

 

 

2.如果有些action需要有豁免权,则可以使用

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



3.如果有些action需要在一些条件下使用login_required,有时不需要验证,该怎么办。
我的做法是:
在控制器中创建一个private方法,如:

def check_something
 if ...(这里放置条件)

login_required

end

end
 


然后将filter部分代码改为如下:

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


这样,就可以实现有条件的执行某个方法了。

另外还有一种采用block的控制方法,大家可以参考http://www.antunkarlovac.com/blog/2008/07/15/passing-arguments-to-before_filter-in-a-rails-controller/

 

 

 

你可能感兴趣的:(Blog,Rails)