我正在使用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不会保护您的资源免受未经授权的用户的侵害。

10-08 04:25