Как обнаружить, что пользователь будет аутентифицирован? (перед аутентификацией)
Мне нужно вызвать обратный вызов до того, как 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, вы не сможете получить доступ ни к каким функциям внутри вашего контроллера, когда пользователь не вошел в систему.