问题描述
我想将Apache Shiro和MySQL用于我的领域。 Shiro需要使用哪些表格和字段?
1楼
Shiro 不需要数据库表来运行。 Shiro用户可以使用他们想要建模或管理用户,组,权限等的任何数据存储。
Shiro 责任充当您数据的桥梁(无论您想要代表它)并以Shiro理解的格式返回它。
因为Shiro没有对您强加数据模型,所以它允许它与许多后端(LDAP,Active Directory,RDBMS,文件系统等)一起使用。
如果您想使用RDBMS作为后备数据存储,请查看Shiro的源代码,以便了解表的外观。 这只是一个例子。 你可以拥有任何你想要的表结构。
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或数据库的任何信息。 在此基础上,它似乎并不像需要任何特定的表。