Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ApacheShiro需要哪些数据库表?_Java_Apache_Shiro - Fatal编程技术网

Java ApacheShiro需要哪些数据库表?

Java ApacheShiro需要哪些数据库表?,java,apache,shiro,Java,Apache,Shiro,我想在我的领域中使用ApacheShiro和MySQL。Shiro需要使用哪些表和字段?简单介绍一下Shiro的表和字段,根本没有提到MySQL或数据库。基于此,似乎不需要任何特定的表。Shiro不需要数据库表来运行。Shiro用户可以使用他们想要建模或管理用户、组、权限等的任何数据存储 Shiro的责任是充当数据的桥梁(无论您希望如何表示),并以Shiro理解的格式返回数据 因为Shiro不会将数据模型强加给您,所以它可以处理这么多后端(LDAP、Active Directory、RDBMS、

我想在我的领域中使用ApacheShiro和MySQL。Shiro需要使用哪些表和字段?

简单介绍一下Shiro的表和字段,根本没有提到MySQL或数据库。基于此,似乎不需要任何特定的表。

Shiro不需要数据库表来运行。Shiro用户可以使用他们想要建模或管理用户、组、权限等的任何数据存储

Shiro的责任是充当数据的桥梁(无论您希望如何表示),并以Shiro理解的格式返回数据

因为Shiro不会将数据模型强加给您,所以它可以处理这么多后端(LDAP、Active Directory、RDBMS、文件系统等)


如果您想使用RDBMS作为备份数据存储,请查看Shiro的源代码,了解表的外观。不过,这只是一个例子。你可以有任何你想要的表格结构。

据我所知,它只需要3个 我有3个表和2个视图,用作框架的数据源。 我在Postgresql上有这个,但是您可以将它调整为在其他数据库中使用

试试这个

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  );

如果您发现问题,请发回

此答案听起来确实正确,但没有回答问题。例如,一组create语句将是一个更好的答案。表需要以某种方式创建。此sql在我的MySQL 5.5数据库中执行时没有错误。对于MySQL来说,这在语法上是可以的,如果没有任何特定的含义或功能的话。。