Springboot+vue前後端分離バックグラウンド管理システム(5)--バックグラウンド権限テーブル構造設計


RBACとは
RBACは、ロールベースのアクセス制御(Role-Based Access Control)RBACでは、ユーザは、適切なロールのメンバとなることによって、これらのロールの権限を得る.これにより、権限の管理が大幅に簡素化されます.このように管理するのはすべて階層が互いに依存して、権限は役に与えて、役をまたユーザーに与えて、このような権限の設計はとてもはっきりしていて、管理するのはとても便利です.
参照:https://shuwoom.com/?p=3041
こちらの管理システムは最も簡単なRBAC 0モデルしか使いません
テーブルデザイン
  • sys_userテーブル
  • CREATE TABLE `sys_user` (
      `id` varchar(32) NOT NULL,
      `username` varchar(32) NOT NULL COMMENT '   ',
      `password` varchar(64) NOT NULL COMMENT '  ',
      `sex` char(1) DEFAULT NULL COMMENT '   0  | 1  ',
      `locked` char(1) DEFAULT NULL COMMENT '     0   | 1  ',
      `create_time` datetime DEFAULT NULL COMMENT '    ',
      `create_by` varchar(32) DEFAULT NULL COMMENT '   ',
      `update_time` datetime DEFAULT NULL COMMENT '    ',
      `update_by` varchar(32) DEFAULT NULL COMMENT '   ',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • sys_roleテーブル
  • CREATE TABLE `sys_role` (
      `id` varchar(32) NOT NULL COMMENT 'ID',
      `code` varchar(32) NOT NULL COMMENT '    ',
      `name` varchar(32) DEFAULT NULL COMMENT '    ',
      `forbidden` varchar(1) DEFAULT NULL COMMENT '     0:   | 1:  ',
      `create_by` varchar(32) DEFAULT NULL COMMENT '   ',
      `create_time` datetime DEFAULT NULL COMMENT '    ',
      `update_by` varchar(32) DEFAULT NULL COMMENT '   ',
      `update_time` datetime DEFAULT NULL COMMENT '    ',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='   ';
  • sys_menuテーブル
  • CREATE TABLE `sys_menu` (
      `id` varchar(32) NOT NULL COMMENT 'ID',
      `parent_id` varchar(32) DEFAULT '0' COMMENT '    ID',
      `code` varchar(32) NOT NULL COMMENT '    ',
      `name` varchar(32) NOT NULL COMMENT '    ',
      `type` char(1) DEFAULT NULL COMMENT '     0:   | 1:  (  )',
      `permission` varchar(32) DEFAULT NULL COMMENT '    ',
      `icon` varchar(32) DEFAULT NULL COMMENT '  ',
      `path` varchar(32) DEFAULT NULL COMMENT '    ',
      `component` varchar(32) DEFAULT NULL COMMENT '    ',
      `sort` varchar(32) DEFAULT NULL COMMENT '  ',
      `forbidden` varchar(1) DEFAULT NULL COMMENT '     0:   | 1:  ',
      `create_by` varchar(32) DEFAULT NULL COMMENT '   ',
      `create_time` datetime DEFAULT NULL COMMENT '    ',
      `update_by` varchar(32) DEFAULT NULL COMMENT '   ',
      `update_time` datetime DEFAULT NULL COMMENT '    ',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='   ';
  • sys_user_roleテーブル
  • CREATE TABLE `sys_user_role` (
      `id` varchar(32) NOT NULL COMMENT 'ID',
      `user_id` varchar(32) NOT NULL COMMENT '  ID',
      `role_id` varchar(32) NOT NULL COMMENT '  ID',
      `create_by` varchar(32) DEFAULT NULL COMMENT '   ',
      `create_time` datetime DEFAULT NULL COMMENT '    ',
      `update_by` varchar(32) DEFAULT NULL COMMENT '   ',
      `update_time` datetime DEFAULT NULL COMMENT '    ',
      PRIMARY KEY (`id`),
      UNIQUE KEY `uk_user_role` (`user_id`,`role_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='       ';
  • sys_role_menuテーブル
  • CREATE TABLE `sys_role_menu` (
      `id` varchar(32) NOT NULL COMMENT 'ID',
      `role_id` varchar(32) NOT NULL COMMENT '  ID',
      `menu_id` varchar(32) NOT NULL COMMENT '  ID',
      `create_by` varchar(32) DEFAULT NULL COMMENT '   ',
      `create_time` datetime DEFAULT NULL COMMENT '    ',
      `update_by` varchar(32) DEFAULT NULL COMMENT '   ',
      `update_time` datetime DEFAULT NULL COMMENT '    ',
      PRIMARY KEY (`id`),
      UNIQUE KEY `uk_role_menu` (`role_id`,`menu_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='       ';

    もう一つのコードは構成表を生成し、後のビジネスコードはこの表の構成によって統一的に生成される.
  • sys_gen
  • CREATE TABLE `sys_gen` (
      `id` varchar(32) NOT NULL COMMENT 'ID',
      `table_name` varchar(32) NOT NULL COMMENT '  ',
      `table_prefix` varchar(32) DEFAULT NULL COMMENT '         ,         ',
      `module` varchar(32) NOT NULL COMMENT '             ',
      `description` varchar(32) DEFAULT NULL COMMENT '    ',
      `author` varchar(32) DEFAULT NULL COMMENT '  ',
      `create_by` varchar(32) DEFAULT NULL COMMENT '   ',
      `create_time` datetime DEFAULT NULL COMMENT '    ',
      `update_by` varchar(32) DEFAULT NULL COMMENT '   ',
      `update_time` datetime DEFAULT NULL COMMENT '    ',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='      ';

    以上が権限ベースのバックグラウンド管理ベーステーブルです.