Как обнаружить, что пользователь будет аутентифицирован? (перед аутентификацией)

Мне нужно вызвать обратный вызов до того, как Devise перенаправит пользователя на страницу входа, вероятно, потому что authenticate_user! Обнаружен метод, он не вошел в систему. Что-то вроде:

before_filter :authenticate_user!, :only => :edit

def not_authenticated_callback
  # do something
end

Это не должно быть вызвано, если authenticate_user! не был назван.

2 ответа

Решение

Я нашел уродливое решение:

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

При использовании before_filter: authenticate_user! действие не будет выполняться внутри вашего контроллера, если пользователь не вошел в систему.

если вы используете before_filter, вы не сможете получить доступ ни к каким функциям внутри вашего контроллера, когда пользователь не вошел в систему.

Другие вопросы по тегам