快速上手

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

MatrixAuth——高性能轻量级分布式权限系统