A short snippet on how to make Ruby on Rails authenticate_or_request_with_http_basic respond with a JSON valid message upon failure.
class ApplicationController < ActionController::API
include(
ActionController::HttpAuthentication::Basic::ControllerMethods
)
before_action :http_authenticate!
def http_authenticate!
authenticate_or_request_with_http_basic do |key, secret|
return if Resource.find_by(
key: key,
secret: secret
)
end
render(
json: 'Invalid credentials'.to_json,
status: 401
)
end
end
Cover photo by Vladimer Shioshvili on Attribution-ShareAlike 2.0 Generic (CC BY-SA 2.0) license.