Пользователи
Сущность User
Пользователи приложения Jmix определяются классом User
, который Studio автоматически создает в новом проекте. Это сущность JPA, реализующая интерфейс JmixUserDetails
, который имеет ряд методов, требуемых фреймворком:
-
getUsername()
возвращает уникальное имя пользователя. -
getPassword()
возвращает хэшированный пароль. -
isEnabled()
,isAccountNonExpired()
,isAccountNonLocked()
,isCredentialsNonExpired()
указывают, может ли пользователь войти в систему. -
getAuthorities()
,setAuthorities()
используются фреймворком для привязки пользователя к набору разрешений при входе в систему.
Пользователи хранятся в основной базе данных приложения. По умолчанию сущность User
и соответствующая таблица базы данных имеют следующие атрибуты:
-
id
,version
являются стандартными атрибутами первичного ключа и оптимистической блокировки. -
username
,password
,enabled
хранят значения, возвращаемые методами интерфейсаJmixUserDetails
. -
email
,firstName
,lastName
хранят дополнительную информацию о пользователях.
Вы можете определить любое количество дополнительных атрибутов, необходимых для приложения, например, department
или position
.
Управление пользователями
Новый проект содержит скрипт миграции базы данных 010-init-user.xml
, который создает пользователя с именем и паролем admin
/admin
и предоставляет ему полный доступ к приложению, связывая сущность с ролью system-full-access
.
Новый проект также содержит экраны UI для управления пользователями, см. Application → Users. Эти экраны позволяют создавать, редактировать и удалять пользователей, изменять и сбрасывать их пароли. Чтобы назначить роли пользователю, нажмите кнопку Role assignments в экране списка пользователей.
Фреймворк содержит роль ui-minimal , которая дает разрешения на вход в UI и использование некоторых рядовых элементов UI. Назначьте эту роль новым пользователям, которые будут взаимодействовать с приложением через UI, так как в противном случае они не смогут войти в систему.
|
Встроенные пользователи
Любое приложение Jmix со стандартной подсистемой безопасности имеет два встроенных пользователя:
-
Пользователь Anonymous соответствует не прошедшим аутентификацию пользователям. Это позволяет предоставлять пользователю некоторые разрешения до того, как он войдет в систему.
-
Пользователь System требуется для механизма системной аутентификации. Он используется, когда нет реального пользователя, взаимодействующего с приложением, например, при его запуске или при вызове бизнес-метода планировщиком.
Встроенные объекты пользователей не хранятся в базе данных, а создаются при запуске приложения классом проекта DatabaseUserRepository
. Обоих пользователей можно настроить в методах initAnonymousUser()
и initSystemUser()
этого класса. По умолчанию системный пользователь связан с ролью system-full-access
и, следовательно, имеет все разрешения.
Анонимный пользователь по умолчанию не имеет никаких разрешений.