Я переопределяю реакцию на сбой Devise, чтобы установить код состояния 401. Однако, когда пользователь не может войти в систему, он перенаправляется на страницу со ссылкой «вы перенаправлены». Если я удаляю этот :status => 401
из перенаправления, он работает нормально.
class CustomFailure < Devise::FailureApp
def redirect_url
new_user_session_url(:subdomain => 'secure')
end
def respond
if http_auth?
http_auth
else
store_location!
flash[:alert] = i18n_message unless flash[:notice]
redirect_to redirect_url, :status => 401
end
end
end
редактировать
В качестве альтернативы я хотел бы отобразить флэш-сообщение и остаться на той же странице, но добавив следующую строку кода:
render :text => "unauthorized", :status => 401
заставляет рубина жаловаться:
undefined method `render' for #<CustomFailure:0x00000103367f28>
Что здесь происходит?