在使用
在rails上插入无效凭据作为用户名:密码时,我正在努力尝试更改默认消息。authenticate_or_request_with_http_basic
例如,如果我对需要此身份验证的方法发出curl请求,则在插入错误的用户名和密码后,它会返回authenticate_or_request_with_http_basic
因此,在这种情况下,我希望能够使用特定的XML格式字符串自定义此消息(就像twitter API一样)。这可能吗?
提前致谢
答案 0 :(得分:6)
如果要在登录提示中自定义消息,只需将消息传递给方法调用。
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