Перейти к основному содержанию

Инициализация данных

Если вы развертываете Casdoor вместе с другими сервисами как полноценное приложение, вы можете предоставить пользователям функцию «из коробки». Это означает, что пользователи могут напрямую использовать приложение без какой-либо настройки.

В такой ситуации вы можете использовать инициализацию данных для регистрации вашего сервиса в Casdoor через файл конфигурации. Этот файл может быть предопределенным или динамически сгенерированным вашим собственным сервисом.

Здесь мы предоставляем учебник по импорту или экспорту конфигурационных данных.

Импорт конфигурационных данных

By default, if there is a configuration file named init_data.json at the root directory of Casdoor, it will be used to initialize data in Casdoor. You can also specify a custom path for the initialization file by setting the initDataFile parameter in conf/app.conf:

initDataFile = /path/to/your/init_data.json

If no custom path is specified, Casdoor will look for init_data.json in the root directory where Casdoor runs.

Если вы используете официальный образ Docker для Casdoor, вот некоторые скрипты, которые могут помочь вам смонтировать init_data.json в контейнер.

Шаблон для init_data.json предоставлен по адресу: init_data.json.template. Переименуйте его в init_data.json перед использованием.

Для Docker

Если вы развертываете Casdoor с помощью Docker, вы можете использовать команду volume для монтирования init_data.json в контейнер.

docker run ... -v /path/to/init_data.json:/init_data.json

Для Kubernetes

Если вы развертываете Casdoor с помощью Kubernetes, вы можете использовать configmap для хранения init_data.json.

apiVersion: v1
kind: ConfigMap
metadata:
name: casdoor-init-data
data:
init_data.json:

Вы можете смонтировать данные в pods Casdoor, смонтировав configmap. Вы можете изменить ваш deployment следующим образом:

apiVersion: apps/v1
kind: Deployment
...
spec:
template:
...
spec:
containers:
...
volumeMounts:
- mountPath: /init_data.json
name: casdoor-init-data-volume
subPath: init_data.json
volumes:
- configMap:
name: casdoor-init-data
name: casdoor-init-data-volume

Экспорт конфигурационных данных

You can export all Casdoor configuration data to a file for backup or migration purposes. There are two methods available:

If you're running Casdoor from a binary, use the -export flag to dump the database to a JSON file:

# Export to default location (init_data_dump.json)
./casdoor -export

# Export to a custom path
./casdoor -export -exportPath /path/to/backup.json

The export runs after database initialization but before the server starts, then exits automatically. This method works with any deployment method (binary, Docker, Kubernetes) and doesn't require Go toolchain or source code access.

Using Go Test

If you have access to the source code, you can use the test method:

go test ./object -v -run TestDumpToFile

This will generate init_data_dump.json in the same directory.

Migrating Data

After exporting, rename init_data_dump.json to init_data.json and place it in the root directory of your target Casdoor installation. On startup, Casdoor will automatically import the data.

Ссылки

Все объекты Casdoor, поддерживаемые инициализацией данных, перечислены ниже:

ОбъектСтруктура GoДокументация
организацииstructdoc
приложенияstructdoc
пользователиstructdoc
сертификатыstructdoc
провайдерыstructdoc
ldapstructдокументация
моделиstruct
разрешенияstructdoc
платежиstructдокументация
продуктыstructдокументация
ресурсыstructдокументация
ролиstructдокументация
синхронизаторыstructдокументация
токеныstructдокументация
вебхукиstructдокументация
группыstructдокументация
адаптерыstructдокументация
принудителиstruct
планыstructdoc
ценообразованиеstructдокументация
приглашенияstructдокументация
записиstruct
сессииstruct
подпискиstructdoc
транзакцииstruct

Если вы все еще чувствуете себя сбитым с толку при заполнении этого шаблона, вы можете вызвать RESTful API или использовать режим отладки вашего браузера, чтобы увидеть ответ GetXXX на эти объекты. Ответы представлены в том же формате, что и init_data.json.