Добрый день! Имеются некие вопросы по вашей платформе. Наша компания хочет реализовать сервер REST API на вашей платформе. Вопросы основные такие. Существует ли возможность прикрутить регистрацию в вашей платформе? Создалось впечатление , что на платформе можно работать либо с готовыми пользователями в базе данных, либо через oauth2 создание пользователей из других сервисов, что не подходит под наши задачи. Если есть примеры такой реализации на rest api был бы благодарен .
Дополню: Регистрация необходима , чтобы пользователи сами могли себя занести в базу данных , а уже после получить токен согласно пользователю в базе.
Добрый день! Так вроде же anonymous
был создан специально для таких случаев Authentication :: Документация Jmix (там ближе к концу). Через него можно реализовать работу с методами саморегитрации, зачем только - не очень понятно …
Если его функциональности недостаточно, то можно выделить 1 “полноценного” общего пользователя, через которого будут регистрироваться остальные. Но не очень понятна задача.
Из коробки саморегистрации вроде бы нет (ну или о ней пока что широко не известно).
Вы хотите как-то профилировать OpenAPI шлюз (который в JMIX не рализован), чтобы у каждого из пользователей были свои индивидуальные настройки? Или Вам уже потом внутри системы нужно понимать какой объект был создан/изменен каким пользователем через OpenAPI шлюз?
Вообще выставлять АПИ JMIX в грязный Интернет наверно не самая лучшая идея. Мы у себя проксируем через APISIX и ему подобные шлюзы, на которых реализовано документирование открытых методов, саморегистрация, профильная низкоуровневая защита и биллинг.
В дополнение к ответу Игоря чуть подробнее опишу простой вариант регистрации через REST API.
-
Создаете свой контроллер типа такого:
@RestController public class UserRegistrationController { @PostMapping("/rest/user-registration") public void registerUser(@RequestParam String username, @RequestParam String password) { // ... } }
-
Делаете URL контроллера доступным без аутентификации:
jmix.rest.anonymous-url-patterns = /rest/user-registration
-
В
DatabaseUserRepository
вашего проекта конфигурируете права пользователя anonymous нужным вам образом - например чтобы он мог создавать сущность User. См. пример в документации. Используйте роли сscope = "API"
. -
Метод
registerUser
вашего контроллера будет выполняться с контекстом и правами пользователя anonymous. Используйте бинPasswordEncoder
чтобы закодировать пароль пользователя.