1 数据源结构
MatrixAuth中的数据表可以分为两类。一类是管理类数据表,有3个,用来记录数据源、缓存、业务应用等信息;一类是RBAC类数据表,有6个,记录业务应用的“应用-角色-权限”关系。
根据所包含的数据表的不同,MatrixAuth中的数据源分为两类:
- 默认数据源:包含了管理类数据表、RBAC类数据表。MatrixAuth只有一个默认数据源,当某个业务应用没有设置数据源时,则使用默认数据源中的RBAC表为该业务应用提供服务。
- RBAC数据源:只包含RBAC类数据表。MatrixAuth支持管理零个或者多个RBAC数据源。业务应用可以选择该类数据源存储自身的“用户-角色-权限”信息,一个RBAC数据源可以供多个业务应用共用。
下面是MatrixAuth的数据源结构:
2 默认数据源
MatrixAuth有且只有一个默认数据源。
默认数据源需要使用下面语句初始化9个数据表。
业务应用信息表application:
create table application
(
name varchar(255) not null
primary key,
token varchar(255) null,
dataSourceName varchar(255) null,
cacheName varchar(255) null
);
数据源信息表datasource:
create table datasource
(
name varchar(255) not null
primary key,
url text not null,
driver varchar(255) null,
userName varchar(255) null,
password varchar(255) null
);
缓存信息表cache:
create table cache
(
name varchar(255) not null
primary key,
url varchar(255) not null,
password varchar(255) null
);
用户表user:
create table user
(
appName varchar(255) not null,
`key` varchar(255) not null,
name varchar(255) null,
primary key (appName, `key`)
);
“用户-角色”关系表user_x_role:
create table user_x_role
(
appName varchar(255) not null,
userKey varchar(255) not null,
roleName varchar(255) not null,
primary key (appName, userKey, roleName)
);
角色表role:
create table role
(
appName varchar(255) not null,
name varchar(255) not null,
type varchar(255) not null,
description text null,
primary key (appName, name)
);
“角色-权限”关系表role_x_permission:
create table role_x_permission
(
appName varchar(255) not null,
roleName varchar(255) not null,
permKey varchar(255) not null,
primary key (appName, roleName, permKey)
);
权限表permission:
create table permission
(
appName varchar(255) not null,
`key` varchar(255) not null,
name varchar(255) null,
description text null,
primary key (appName, `key`)
);
“用户-角色”关系快速查询表user_x_permission:
create table user_x_permission
(
fullUserKey varchar(255) not null
primary key,
permissionKeys text null
);
3 RBAC数据源
MatrixAuth可以管理零个或者多个RBAC数据源。
RBAC数据源需要使用下面语句初始化6个数据表。
用户表user:
create table user
(
appName varchar(255) not null,
`key` varchar(255) not null,
name varchar(255) null,
primary key (appName, `key`)
);
“用户-角色”关系表user_x_role:
create table user_x_role
(
appName varchar(255) not null,
userKey varchar(255) not null,
roleName varchar(255) not null,
primary key (appName, userKey, roleName)
);
角色表role:
create table role
(
appName varchar(255) not null,
name varchar(255) not null,
type varchar(255) not null,
description text null,
primary key (appName, name)
);
“角色-权限”关系表role_x_permission:
create table role_x_permission
(
appName varchar(255) not null,
roleName varchar(255) not null,
permKey varchar(255) not null,
primary key (appName, roleName, permKey)
);
权限表permission:
create table permission
(
appName varchar(255) not null,
`key` varchar(255) not null,
name varchar(255) null,
description text null,
primary key (appName, `key`)
);
“用户-角色”关系快速查询表user_x_permission:
create table user_x_permission
(
fullUserKey varchar(255) not null
primary key,
permissionKeys text null
);