У меня есть приложение Rails 5.2 в режиме API. Если запрос предоставлен с правильными учетными данными базовой аутентификации, ожидаемые данные JSON { status: true, data: 'test_user_data' }
будут обработаны.
users_controller.rb
class Api::UsersController < ApplicationController
before_action :basic_authenticate
def get_user_info
render json: { status: true, data: 'test_user_data' }
end
private
def basic_authenticate
authenticate_or_request_with_http_basic do |username, password|
username == 'test_name' && password == 'test_password'
end
end
end
application_controller.rb
class ApplicationController < ActionController::API
include ActionController::HttpAuthentication::Basic::ControllerMethods
end
Однако, если не удается выполнить базовую аутентификацию, отображается только простой текст HTTP Basic: Access denied.
.
То, что я хотел бы сделать, - это выводить сообщения об ошибках в JSON в случае сбоя аутентификации, что-то вроде { status: false, message: 'basic authentication failed'}
.
Как правильно это исправить?