В моем приложении я аутентифицирую пользователей, используя Devise, и заметил, что вы можете изменить страницу, на которую вы перенаправляетесь, в случае неудачного входа.В вики я нашел следующий пример:
class CustomFailure < Devise::FailureApp
def redirect_url
new_user_session_url(:subdomain => 'secure')
end
# You need to override respond to eliminate recall
def respond
if http_auth?
http_auth
else
redirect
end
end
end
Следуя этому примеру, я создал свой собственный класс CustomFailure (custom_failure.rb) и поместил его в папку помощника (не уверен, куда его поместить).Это следующий класс, который я создал:
class CustomFailure < Devise::FailureApp
def redirect_url
new_user_session_url(:subdomain => 'secure')
end
# Redirect to root_url
def respond
if http_auth?
http_auth
else
root_url
end
end
end
Я также добавил следующее в файл config / initializers / devise.rb (как должны быть сделаны состояния вики):
config.warden do |manager|
manager.failure_app = CustomFailure
end
Несмотря на то, что я не получаю ошибок, при неправильном входе он по-прежнему перенаправляет на страницу / users / sign_in (не на корневую) и ничего не загружается (страница полностью белая, хотя источник не пустой).Что-то не так с моим классом CustomFailure или, может быть, он находится не в той папке?
Я использую Rails 3.0.1 и Devise 1.1.rc0.
Вики, где найден этот код,at: How To: Перенаправление на определенную страницу, когда пользователь не может быть аутентифицирован