我正在使用Devise内置的before_filter :authenticate_user!
。如果用户未能通过before过滤器(尝试注销后尝试执行操作),我想在我的应用程序帮助器中调用自己的自定义方法。我该如何在何处执行此操作?
最佳答案
我会在使用user_signed_in?
的过滤器之前编写一个自定义。这只会返回一个 bool 值,而不执行authenticate_user!
所做的任何重定向类型的操作。
因此,您可以编写如下的before过滤器:
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
请注意,除非该
unless
语句的内部区域重定向或呈现,否则before before filter不会保护您的资源免受未经授权的用户的侵害。