В моем приложении я аутентифицирую пользователей с помощью Devise, и я заметил, что вы можете изменить страницу, на которую перенаправляется, если сбой входа. В wiki я нашел следующий пример:
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(поскольку состояния wiki должны быть выполнены):
config.warden do |manager|
manager.failure_app = CustomFailure
end
Хотя я не получаю ошибок, когда я неправильно вхожу, он все же перенаправляется на страницу /users/sign _in (а не на корневую страницу), и ничего не загружается (страница полностью белая, хотя источник не пуст). Есть ли что-то неправильно с моим классом CustomFailure или, может быть, оно находится в неправильной папке?
Я использую Rails 3.0.1 и Devise 1.1.rc0.
Вики, где этот код найден, находится по адресу: Как: Перенаправить на определенную страницу, когда пользователь не может быть аутентифицирован