use*_*569 11 ruby-on-rails before-filter devise ruby-on-rails-3
我正在使用Devise的内置功能before_filter :authenticate_user!.如果用户未通过过滤器(尝试在注销时执行操作),我想在我的应用程序助手中调用我自己的自定义方法.我该怎么做?
而不是在调用before_filter :authenticate_user!的控制器中调用自己的函数authenticate_user!.就像是:
before_filter :logged_in
...
private
def logged_in
your_function
authenticate_user!
end
Run Code Online (Sandbox Code Playgroud)
我会在使用过滤器之前编写一个自定义user_signed_in?.这只会返回一个布尔值,而不会执行任何重定向类型的操作authenticate_user!.
所以,你可以写一个像这样的前过滤器:
before_filter :custom_user_auth
...
def custom_user_auth
unless user_signed_in?
# Do custom stuff, ultimately restricting access to the
# ...protected resource if it needs to be
end
end
Run Code Online (Sandbox Code Playgroud)
请注意,此过滤器之前不会保护您的资源免受未经授权的用户的攻击,除非该unless语句的内部区域重定向或呈现.