如何检测该用户将被验证? (在验证之前)

时间:2012-10-08 14:50:22

标签: ruby-on-rails devise warden

我需要在Devise将用户重定向到登录页面之前触发回调,可能是因为authenticate_user!方法检测到他没有登录。例如:

before_filter :authenticate_user!, :only => :edit

def not_authenticated_callback
  # do something
end

如果未调用authenticate_user!,则不应调用它。

2 个答案:

答案 0 :(得分:0)

我找到了一个丑陋的解决方案:

around_filter :intersect_warden

def intersect_warden
  success = false
  result = catch(:warden) do
    result = yield
    success = true
    result
  end

  unless success
    not_authenticated_callback
    throw(:warden, result)
  end
end

答案 1 :(得分:-1)

使用 before_filter:authenticate_user!时,如果用户未登录,操作将不会进入您的控制器。

如果你使用before_filter, 当用户未登录时,您无法访问控制器内的任何功能。