Я хочу использовать Apache Shiro и MySQL для своего королевства. Какие таблицы и поля Сиро должны работать?
Какие таблицы баз данных требуется Apache Shiro?
Ответ 1
Сиро не требует работы таблиц базы данных. Пользователи Shiro могут использовать любой тип хранилища данных, который они хотят смоделировать или управлять пользователями, группами, разрешениями и т.д.
Это сильная Realm ответственность за то, чтобы действовать как мост к вашим данным (однако вы хотите представить его) и вернуть его в формате, который понимает Широ.
Поскольку Shiro не налагает на вас модель данных, это позволяет ей работать со многими бэкендами (LDAP, Active Directory, RDBMS, файловая система и т.д.).
Если вы хотите использовать RDBMS в качестве хранилища данных резервного копирования, проверьте Shiro JdbcRealm исходный код чтобы дать вам представление о том, как выглядят ваши таблицы. Это всего лишь пример. Вы можете создать любую структуру таблицы.
Ответ 2
как я понимаю, для этого требуется только 3 У меня есть 3 таблицы и 2 представления, которые я использую в качестве источника данных для фреймворка. У меня это на Postgresql, но вы можете адаптировать его для использования в других dbs.
попробуйте это
CREATE SCHEMA app;
CREATE TABLE app.sec_permissions (
permission_id int4 NOT NULL,
permission_name varchar( 64 ) NOT NULL,
role_id int4 NOT NULL,
CONSTRAINT pk_sec_permissions PRIMARY KEY ( permission_id ),
CONSTRAINT idx_sec_permissions_unq_name UNIQUE ( permission_name )
);
CREATE INDEX idx_sec_permissions ON app.sec_permissions ( role_id );
CREATE TABLE app.sec_roles (
role_id int4 NOT NULL,
role_name varchar( 32 ) NOT NULL,
user_id int4 NOT NULL,
CONSTRAINT pk_sec_roles_0 PRIMARY KEY ( role_id ),
CONSTRAINT idx_sec_roles_unq_name UNIQUE ( role_name )
);
CREATE INDEX idx_sec_roles ON app.sec_roles ( user_id );
CREATE TABLE app.sec_users (
user_id int4 NOT NULL,
user_loginname varchar( 32 ) NOT NULL,
user_password varchar( 254 ) NOT NULL,
user_passsalt varchar( 254 ) NOT NULL,
CONSTRAINT pk_sec_users PRIMARY KEY ( user_id ),
CONSTRAINT idx_sec_users_unq_loginname UNIQUE ( user_loginname )
)
;
ALTER TABLE app.sec_permissions ADD CONSTRAINT fk_sec_permissions FOREIGN KEY ( role_id ) REFERENCES app.sec_roles( role_id ) ON DELETE CASCADE ON UPDATE CASCADE
;
ALTER TABLE app.sec_roles ADD CONSTRAINT fk_sec_roles FOREIGN KEY ( user_id ) REFERENCES app.sec_users( user_id ) ON DELETE CASCADE ON UPDATE CASCADE
;
CREATE VIEW app.sec_loginname_roles AS SELECT
su.user_loginname
, su.user_password
, su.user_passsalt
, sr.role_name
FROM
app.sec_users su
INNER JOIN app.sec_roles sr
ON
( su.user_id = sr.user_id );
CREATE VIEW app.sec_role_permissions AS SELECT sr.role_name, sp.permission_name
FROM app.sec_roles sr
INNER JOIN app.sec_permissions sp ON ( sr.role_id = sp.role_id );
Если вы обнаружили что-то не так, отправьте сообщение
Ответ 3
Снимок Shiro страница быстрого запуска и Страница документации по царству ничего не сообщает о MySQL или базах данных. Исходя из этого, похоже, что не нужны какие-либо конкретные таблицы.