Rails - authenticate_or_request_with_http_basic пользовательское сообщение "доступ запрещен" - PullRequest
2 голосов
/ 17 ноября 2009

Я изо всех сил пытаюсь изменить это сообщение по умолчанию, как только вы вводите неверные учетные данные как имя пользователя: пароль на рельсах, используя <code>authenticate_or_request_with_http_basic.

Например, если я сделаю запрос скручивания для метода, который нуждается в этой аутентификации, после ввода неверного имени пользователя и пароля он вернет HTTP Basic: Access denied.

Итак, в этом случае я хотел бы иметь возможность настроить это сообщение с определенной строкой в ​​формате XML (как это делает твиттер API). Это возможно?

Заранее спасибо

1 Ответ

6 голосов
/ 17 ноября 2009

Если вы хотите настроить сообщение в приглашении на вход, просто передайте сообщение в вызов метода.

authenticate_or_request_with_http_basic "My custom message" do |user_name, password|
  user_name == USER_NAME && password == PASSWORD
end

Если вы хотите настроить окончательное сообщение об ошибке, в соответствии с исходным кодом Rails 2.3.4 вы можете сделать это только для дайджест-аутентификации HTTP.

def authentication_request(controller, realm, message = nil)
  message ||= "HTTP Digest: Access denied.\n"
  authentication_header(controller, realm)
  controller.__send__ :render, :text => message, :status => :unauthorized
end

Базовая аутентификация содержит сообщение об ошибке, жестко запрограммированное в методе.

def authentication_request(controller, realm)
  controller.headers["WWW-Authenticate"] = %(Basic realm="#{realm.gsub(/"/, "")}")
  controller.__send__ :render, :text => "HTTP Basic: Access denied.\n", :status => :unauthorized
end
...