Настройки приложения DBGate
Содержание
- Введение
- Пример файла конфигурации
- Ключи и секции верхнего уровня
- Общие настройки DBGate
- Настройки подключений
Введение
DBGate читает настройки из JSON-файлов конфигурации, таких как appsettings.json
и appsettings.Production.json
.
Файл appsettings.json
содержит настройки для всех сред, в то время как appsettings.Production.json
предназначен для среды Production
.
Файл appsettings.json
может быть пустым и содержать только {}
.
DBGate также поддерживает настройку через переменные среды и параметры командной строки.
См. подробности в статье Configuration in ASP.NET Core.
Пример файла конфигурации
Вот пример файла конфигурации:
{ "AllowedHosts": "*", "Kestrel": { "EndPoints": { "Http": { "Url": "http://localhost:5003" } } }, "Logging": { "LogLevel": { "Default": "Warning", "System": "Information", "Microsoft": "Information" } }, "DBGate": { "Auth": "jwt", "WebRoot": "wwwroot", "ApiRoot": "api", "AppRoot": "app", "AuthRoot": "auth", "HomeRoot": "home", "EditRoots": { "edit": "edit.htm" }, "LoginRoots": { "login": "login.htm" }, "ApplicationPathBase": null, "ConnectionSegment": 0, "DefaultPort": 5003, "DefaultLanguageFolder": "en-us", "AccessTokenExpirationInMinutes": 10, "RefreshTokenExpirationInMinutes": 20160, "MaxPageSize": 1000, "UppercaseNamesInLowercase": true, "DefaultContainerName": "default", "DisableMetadataCache": false, "DisableEditPageCache": false, "IncludeAnnotations": true, "HideConfigurationObjects": true, "HideEditProcedures": true, "EnableCodeBrowser": true, "BinaryAsHex": false, "BigNumbersAsString": false, "FunctionPrefixes": "xl_validation_list_, xl_parameter_values_", "FunctionSuffixes": "_select", "LanguageParameters": "data_language, DataLanguage", "TraceSQL": true, "StopEnabled": false }, "DBGateW": { "WebRoot": "wwwroot", "IntegratedSecurityEnabled": false, "StopEnabled": true }, "ConnectionStrings": { "mssql": { "Title": "SQL Server", "Offline": false, "AllowDatabaseChange": true, "AllowServerChange": true, "ProviderName": "System.Data.SqlClient", "ConnectionString": "Data Source=.\\SQLEXPRESS;Initial Catalog=master;User ID=user;Pwd=pass" }, "pgsql": { "Title": "PostgreSQL", "Offline": false, "AllowDatabaseChange": true, "AllowServerChange": true, "ProviderName": "Npgsql", "ConnectionString": "Server=localhost;Password=pass;User ID=user;Database=postgres" }, "mysql": { "Title": "MySQL", "Offline": false, "AllowDatabaseChange": true, "AllowServerChange": true, "ProviderName": "MySqlConnector", "ConnectionString": "Server=localhost;Password=pass;User ID=user;Database=mysql" }, "mssql-023": { "Offline": false, "Home": "sample02.htm", "QueryList": "", "IncludeSchemas": "s02 xls", "ExcludeSchemas": null, "HideSchemas": "xls", "HideConfigurationObjects": true, "HideEditProcedures": true, "OmitSchemasInNames": "s02", "ProviderName": "System.Data.SqlClient", "ConnectionString": "Data Source=mssql.savetodb.com;Initial Catalog=AzureDemo100;User ID=sample02_user3;Pwd=Usr_2011#_Xls4168" }, "marketplace": { "Title": "Marketplace", "Offline": false, "OmitSchemasInNames": "marketplace", "ApiNameReplacements": { "usp_buyer_": "", "usp_seller_": "" }, "ProviderName": "MySqlConnector", "ConnectionString": "Server=localhost;Password=pass;User ID=user;Database=marketplace", "SignIn": "marketplace.usp_sign_in", "SignUp": "marketplace.usp_sign_up", "SignInRoleField": "role", "SignInMessageField": "message", "AuthContextValues": { "auth_account_id": 1 }, "AuthContextParams": "auth_user_id auth_seller_id", "RoleUsers": { "auth": { "Username": "marketplace_auth", "Password": "Usr_2011#_Xls4168" }, "default": { "QueryList": "marketplace.xl_buyer_views", "Username": "marketplace_buyer", "Password": "Usr_2011#_Xls4168" }, "buyer": { "QueryList": "marketplace.xl_buyer_views", "Username": "marketplace_buyer", "Password": "Usr_2011#_Xls4168" }, "seller": { "QueryList": "marketplace.xl_seller_views", "Username": "marketplace_seller", "Password": "Usr_2011#_Xls4168" } } } } }
Ключи и секции верхнего уровня
- AllowedHosts
- Устанавливает разрешенные домены.
См. подробности в статье Host filtering with ASP.NET Core Kestrel web server.
Используйте значение*
, чтобы разрешить все адреса. - Kestrel
- Конфигурирует веб-сервер Kestrel.
Используйте эту секцию для привязки сертификатов SSL к конечным точкам.
См. подробности в статье Kestrel web server implementation in ASP.NET Core. - Logging
- Настраивает протоколирование событий.
См. подробности в статье Logging Configuration. - DBGate
- Содержит настройки DBGate.
- DBGateW
- Содержит настройки, переопределяемые для консольной версии .NET Framework.
Секция может включать толькоWebRoot
,IntegratedSecurityEnabled
иStopEnabled
. - ConnectionStrings
- Определяет имена подключений и их свойства, включая строки подключения.
DBGate использует имена подключений для создания конечных точек.
Для приведенного примера создаются конечные точки:/api/mssql/
,/api/pgsql/
,/api/mysql/
,/api/mssql-023/
и/api/marketplace/
.
Общие настройки DBGate
- Auth
- Устанавливает схему аутентификации.
Возможные значения:jwt
иbasic
.
Значение по умолчанию -jwt
, также поддерживается использование обеих схем. - WebRoot
- Определяет папку с содержимым веб-сайта.
Значение по умолчанию -wwwroot
. - ApiRoot
- Определяет корневой сегмент API, например,
api
в/api/mssql/
.
Это значение общее для всех конечных точек.
Значение по умолчанию -api
. - AppRoot
- Устанавливает корневой сегмент для управления консольным приложением, например,
app
в/app/stop
.
Поддерживаются команды POST:stop
,hide
иshow
.
Команды доступны, еслиStopEnabled
равно true. - AuthRoot
- Устанавливает корневой сегмент операций JWT, например,
auth
в/auth/mssql/login
.
Поддерживаются команды POST:login
,logout
,refresh
иgetToken
. - HomeRoot
- Устанавливает корневой сегмент перенаправления на домашнюю страницу, например,
home
в/home/mssql/
.
DBGate перенаправляет такие запросы на домашнюю страницу, заданную в свойствеHome
подключения, или на сервисный документ, если страница не указана.
Значение по умолчанию -home
. - EditRoots
- Определяет корневые сегменты страниц редактирования, например,
edit
в/edit/mssql/
, и соответствующие им страницы HTML.
Например, для данной конфигурации, DBGate вернет страницуedit.htm
для конечной точки/edit/mssql/
.
Значение по умолчанию -edit
и страницаedit.htm
. - LoginRoots
- Определяет корневые сегменты страниц ввода имени и пароля, например,
login
в/login/mssql/
, и соответствующие им страницы HTML.
Например, для данной конфигурации, DBGate вернет страницуlogin.htm
для конечной точки/login/mssql/
.
Для доступа к этим страницам не требуется предварительная аутентификация.
Значение по умолчанию -login
и страницаlogin.htm
. - ApplicationPathBase
- Устанавливает базовый путь приложения.
Обычно, изменять это значение не требуется.
См. подробности в UsePathBaseExtensions.UsePathBase. - ConnectionSegment
- Определяет порядок корневого сегмента API и сегмента подключения.
По умолчанию, DBGate позволяет использовать конечные точки типа/api/mssql/
и/mssql/api/
.
Вы можете задать номер сегмента подключения для использования только одного варианта: 2 для/api/mssql/
и 1 для/mssql/api/
.
Значение по умолчанию - 0. - DefaultPort
- Определяет порт по умолчанию, используемый, если URL не заданы в конфигурации, переменных среды или параметрах командной строки.
Значение по умолчанию - 5003. - DefaultLanguageFolder
- Определяет папку языка по умолчанию, используемую для поиска файлов, не найденных в папке заданного языка.
Например, для данной конфигурации, DBGate будет использовать папкуen-us
.
Значение по умолчанию -en-us
. - AccessTokenExpirationInMinutes
- Определяет время действия токена доступа в минутах.
Значение по умолчанию - 10 минут. - RefreshTokenExpirationInMinutes
- Определяет время действия токена обновления в минутах.
Значение по умолчанию - 20160 минут (14 дней). - MaxPageSize
- Устанавливает максимальное количество возвращаемых записей.
- UppercaseNamesInLowercase
- Определяет преобразование имен объектов и колонок из верхнего регистра в нижний.
Имена со смешанным регистром остаются неизменными.
Значение по умолчанию - true. - DefaultContainerName
- Определяет имя контейнера по умолчанию и его схемы для модели.
Контейнер по умолчанию может быть опущен в URL.
Например, для данной конфигурации, конечные точки/api/mssql/
и/api/mssql/default/
будут использовать одну и ту же модель.
Значение по умолчанию -default
. - DisableMetadataCache
- Отключает кэширование модели базы данных.
Разработчики могут использовать это для загрузки данных модели из базы данных при активной разработке.
Вместо этой опции можно использовать системный параметр URL$reloadMetadata=true
или нажимать кнопкуОбновить
на клиенте с зажатой клавишейCtrl
.
Значение по умолчанию - false. - DisableEditPageCache
- Отключает кэширование страниц редактирования.
Разработчики могут использовать это на этапе разработки.
Значение по умолчанию - false. - IncludeAnnotations
- Отключает аннотации метаданных по умолчанию.
Встроенный клиент JavaScript не зависит от этой опции.
Значение по умолчанию - true. - HideConfigurationObjects
- Скрывает объекты настройки приложений, такие как
xls.objects
,xls.handlers
и другие объекты SaveToDB Framework.
Значение по умолчанию задается в секцииDBGate
, но может быть переопределено для конкретного подключения.
Значение по умолчанию - true. - HideEditProcedures
- Скрывает процедуры сохранения изменений, такие как
usp_cashbook2_insert
,usp_cashbook2_update
иusp_cashbook2_delete
для процедурыusp_cashbook2
.
DBGate использует такие процедуры для реализации операций POST, PUT и DELETE.
Вы можете опубликовать эти процедуры для прямого вызова методом POST.
Значение по умолчанию задается в секцииDBGate
, но может быть переопределено для конкретного подключения.
Значение по умолчанию - true. - EnableCodeBrowser
- Разрешает получение определения объектов по адресу с конечным сегментом
/$definition
.
Пользователь должен иметь разрешениеVIEW DEFINITION
для получения определений.
Значение по умолчанию - false. - BinaryAsHex
- Определяет сериализацию двоичных данных по умолчанию в виде HEX-строк вместо base64.
Вместо этой опции можно использовать системный параметр URL$binaryAsHex=true
.
Значение по умолчанию - false. - BigNumbersAsString
- Определяет сериализацию больших чисел, которые теряют точность в JavaScript, в виде строк.
Вместо этой опции можно использовать системный параметр URL$bigNumbersAsString=true
.
Значение по умолчанию - false. - FunctionPrefixes
- Содержит список префиксов имен хранимых процедур, которым должен быть присвоен тип FunctionImport вместо ActionImport.
Если DBGate не может определить наличие вывода для процедурыxl_list_users
, то будет присвоен тип ActionImport.
Значение по умолчанию - префиксы, используемые в примерах SaveToDB и DBGate. - FunctionSuffixes
- Содержит список суффиксов имен хранимых процедур, которым должен быть присвоен тип FunctionImport вместо ActionImport.
Если DBGate не может определить наличие вывода для процедурыusp_users_select
, то будет присвоен тип ActionImport.
Значение по умолчанию - суффиксы, используемые в примерах SaveToDB и DBGate. - LanguageParameters
- Содержит список имен контекстных параметров языка, разделенных запятой.
DBGate не публикует такие параметры в модели и передает код языка автоматически.
Код языка определяется из сегментов URL типа/en/
,/en-us/
,/en-gb/
или/ru-ru/
.
DBGate определяет список языков, настроенных в базе данных, и передает актуальные коды языков.
Пример конфигурации содержит имена параметров, используемых в плагине SaveToDB. - TraceSQL
- Включает трассировку генерируемых команд SQL.
Значение по умолчанию - false. - StopEnabled
- Позволяет использовать POST-запросы
/app/stop
,/app/show
, и/app/hide
для остановки консольного приложения или отображения и скрытия его окна.
Эти команды могут быть полезны при интеграции DBGate в ваши консольные приложения.
Корень/app
можно изменить в свойствеAppRoot
.
Значение по умолчанию - false. - IntegratedSecurityEnabled
- Разрешает использование аутентификации Windows в подключениях для консольной версии .NET Framework.
Эта версия обычно обслуживает только localhost и запускается в сеансе текущего пользователя, поэтому безопасно разрешить такой вариант аутентификации.
Значение по умолчанию - false.
Настройки подключений
- ProviderName
- Обязательное значение, определяющее имя провайдера строки подключения.
- ConnectionString
- Обязательное значение, определяющее строку подключения.
В строке можно использовать существующие логин и пароль пользователей или шаблоныuser
иpass
.
В последнем случае, DBGate запрашивает логин и пароль при подключении пользователя и заменяет шаблоны на полученные значения. - AllowDatabaseChange
- Позволяет изменять базу данных подключения непосредственно в URL в формате
<connection>:<database>
.
Например, можно использовать адрес/edit/mssql:AzureDemo100/
для подключения к базе данныхAzureDemo100
.
Значение по умолчанию - true для баз данныхmaster
,postgres
,mysql
и false для остальных. - AllowServerChange
- Позволяет изменять сервер и базу данных подключения непосредственно в URL в формате
<connection>:<server>[,<port>][,<database>]
.
Например, можно использовать адрес/edit/mssql:mssql.savetodb.com,AzureDemo100/
для подключения к базе данныхAzureDemo100
на сервереmssql.savetodb.com
.
Значение по умолчанию - false. - AllowPortChange
- Позволяет изменять порт непосредственно в URL в формате
<connection>:<server>[,<port>][,<database>]
.
Например, можно использовать адрес/edit/mssql:mssql.savetodb.com,1433,AzureDemo100/
для подключения к базе данныхAzureDemo100
на сервереmssql.savetodb.com
по порту 1433.
Значение по умолчанию - false. - Title
- Позволяет задать заголовок страницы подключения.
Значение по умолчанию - имя подключения. - Offline
- Позволяет отключить конечную точку.
DBGate возвращает сообщение о недоступности базы данных даже без обращения к ней.
Значение по умолчанию - false. - Home
- Позволяет переопределить домашнюю страницу для подключения.
DBGate использует перенаправление на заданную страницу, когда пользователь нажимает кнопкуДомашняя страница
.
Чтобы открыть страницу по умолчанию, удерживайте клавишуCtrl
при нажатии кнопки.
Вы можете использовать только имя файла и разместить соответствующие страницы в языковых папках типаen-us
иru-ru
. DBGate будет возвращать страницу, соответствующую языку пользователя.
В примере конфигурации выше, в подключенииmssql-023
используется страницаsample02.htm
. - QueryList
- Определяет представление списка запросов, используемое для выбора и настройки объектов, публикуемых в сервисном документе.
Используйте это представление для настройки контейнера по умолчанию для вывода только необходимых объектов.
Значение по умолчанию - null, что включает все объекты, доступные пользователю и имеющие вывод. - IncludeSchemas
- Определяет явный список схем, разделенных пробелами, которые следует включить в модель.
Если значение пустое, то в модель включаются схемы базы данных для MySQL и все схемы, за исключением указанных вExcludeSchemas
, для остальных серверов.
Чтобы включить все схемы для MySQL, задайте значение*
. - ExcludeSchemas
- Определяет список схем, разделенных пробелами, которые не следует включать в модель.
- HideSchemas
- Определяет список схем, разделенных пробелами, которые не следует публиковать в сервисном документе.
- HideConfigurationObjects
- Скрывает объекты настройки приложений, такие как
xls.objects
,xls.handlers
и другие объекты SaveToDB Framework.
Это значение переопределяет значение по умолчанию из секцииDBGate
. - HideEditProcedures
- Скрывает процедуры сохранения изменений, такие как
usp_cashbook2_insert
,usp_cashbook2_update
иusp_cashbook2_delete
для процедурыusp_cashbook2
.
DBGate использует такие процедуры для реализации операций POST, PUT и DELETE.
Вы можете опубликовать эти процедуры для прямого вызова методом POST.
Это значение переопределяет значение по умолчанию из секцииDBGate
. - OmitSchemasInNames
- Определяет список схем, разделенных пробелами, которые следует исключить из имен объектов для сервиса.
Например, объектыs02.cashbook
иs02.usp_cashbook
публикуются по умолчанию какs02_cashbook
иs02_usp_cashbook
.
В примере конфигурации выше, схемаs02
исключается, и объекты будут опубликованы какcashbook
иusp_cashbook
.
Если значение не задано, схема исключается автоматически, если пользователю доступна только одна схема, не считая схемыxls
.
Чтобы отключить эту возможность, задайте любое значение несуществующей схемы, например,none
. - ApiNameReplacements
- Определяет строки, которые должны быть заменены в именах объектов для сервиса.
В примере конфигурации выше, задана замена строкusp_buyer_
иusp_seller_
на пустые строки.
Соответственно, такие имена какusp_buyer_purchases
иusp_seller_orders
будут опубликованы какpurchases
иorders
. - SignIn
- Определяет хранимую процедуру для аутентификации пользователей.
DBGate выполняет эту процедуру, используя данные пользователя из секцииauth
вRoleUsers
.
Процедура должна иметь минимум два параметра - для имени пользователя и пароля.
Также, процедура может иметь параметры, заданные в секцииAuthContextValues
.
Процедура должна возвращать минимум одно поле, заданное в свойствеAuthContextParams
, обычно это идентификатор пользователя.
Также, процедура может возвращать роль пользователя и сообщение об ошибке в полях, заданных в свойствахSignInRoleField
иSignInMessageField
.
Если процедура возвращает непустое сообщение, DBGate пробует аутентифицировать пользователя с использованием данных как логина и пароля базы данных. - SignUp
- Определяет хранимую процедуру для создания новых пользователей.
Возможности и требования к процедуре аналогичны процедуреSignIn
. - SignInRoleField
- Определяет имя поля с ролью пользователя в результатах процедур
SignIn
иSignUp
.
DBGate использует значение поля для загрузки данных подключения из соответствующей секцииRoleUsers
.
Значение по умолчанию -role
. - SignInMessageField
- Определяет имя поля с сообщением об ошибке в результатах процедур
SignIn
иSignUp
.
Если значение поля не пустое, вызывается исключение, и сообщение возвращается пользователю.
Значение по умолчанию -message
. - AuthContextValues
- Определяет контекстные параметры и их значения.
Эти параметры не публикуются в модели, но передаются в процедуры с заданными значениями.
Это можно использовать, например, в едином приложении, обслуживающем различные домены (multi-tenant).
В примере конфигурации выше,auth_account_id
будет передаваться в процедуры со значением 1. - AuthContextParams
- Определяет контекстные параметры, значения которых получаются из процедур
SignIn
иSignUp
.
Эти параметры не публикуются в модели, но передаются в процедуры с заданными значениями.
Обычно, это внутренний идентификатор пользователя, так как обращение к базе данных выполняется под общим пользователем роли.
Однако, можно определить любое количество параметров.
В примере конфигурации выше, приложение определяет два параметра:auth_user_id
иauth_seller_id
. Процедуры могут использовать один из них или оба. - RoleUsers
- Определяет пользователей для каждой роли приложения.
Секция должна содержать определения как минимум для двух встроенных ролей:auth
иdefault
.
DBGate использует данные ролиauth
для выполнения процедурSignIn
иSignUp
.
DBGate использует данные ролиdefault
для выполнения последующих запросов аутентифицированного пользователя, если процедурыSignIn
илиSignUp
не вернули роль, или роль не определена в секцииRoleUsers
.
Секция роли должна содержать минимум два значения:Username
иPassword
.
Также, в свойствеQueryList
можно задать представление (в форматеQueryList
), которое выводит объекты для сервисного документа.
В примере конфигурации выше, определены ролиbuyer
иseller
, что позволяет использовать разные модели для покупателей и продавцов.