使用shiro作爲權限安全框架,主要用到的表就5個:
實體表:
用戶表
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` varchar(20) NOT NULL COMMENT '用戶id',
`username` varchar(50) NOT NULL COMMENT '用戶名',
`password` varchar(50) NOT NULL,
`salt` varchar(128) DEFAULT NULL COMMENT '加密鹽值',
`email` varchar(50) DEFAULT NULL COMMENT '郵箱',
`phone` varchar(50) DEFAULT NULL COMMENT '聯繫方式',
`sex` int(255) DEFAULT NULL COMMENT '年齡:1男2女',
`age` int(3) DEFAULT NULL COMMENT '年齡',
`status` int(1) NOT NULL COMMENT '用戶狀態:1有效; 2刪除',
`create_time` datetime DEFAULT NULL COMMENT '創建時間',
`update_time` datetime DEFAULT NULL COMMENT '更新時間',
`last_login_time` datetime DEFAULT NULL COMMENT '最後登錄時間',
PRIMARY KEY (`id`,`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;
角色表
CREATE TABLE `role` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`role_id` varchar(20) NOT NULL COMMENT '角色id',
`name` varchar(50) NOT NULL COMMENT '角色名稱',
`description` varchar(255) DEFAULT NULL COMMENT '角色描述',
`status` int(1) NOT NULL COMMENT '狀態:1有效;2刪除',
`create_time` datetime DEFAULT NULL COMMENT '創建時間',
`update_time` datetime DEFAULT NULL COMMENT '更新時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
權限表(菜單和按鈕)
CREATE TABLE `permission` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`permission_id` varchar(20) NOT NULL COMMENT '權限id',
`name` varchar(100) NOT NULL COMMENT '權限名稱',
`description` varchar(255) DEFAULT NULL COMMENT '權限描述',
`url` varchar(255) DEFAULT NULL COMMENT '權限訪問路徑',
`perms` varchar(255) DEFAULT NULL COMMENT '權限標識',
`parent_id` int(11) DEFAULT NULL COMMENT '父級權限id',
`type` int(1) DEFAULT NULL COMMENT '類型 0:目錄 1:菜單 2:按鈕',
`order_num` int(3) DEFAULT '0' COMMENT '排序',
`icon` varchar(50) DEFAULT NULL COMMENT '圖標',
`status` int(1) NOT NULL COMMENT '狀態:1有效;2刪除',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8;
關係表:
用戶角色關係表
CREATE TABLE `user_role` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` varchar(20) NOT NULL COMMENT '用戶id',
`role_id` varchar(20) NOT NULL COMMENT '角色id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
角色權限關係表
CREATE TABLE `role_permission` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`role_id` varchar(20) NOT NULL COMMENT '角色id',
`permission_id` varchar(20) NOT NULL COMMENT '權限id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=869 DEFAULT CHARSET=utf8;
這5張表是屬於比較全面的shiro權限管理表,可以把權限比較精細的分配給每個頁面,每個按鈕。
也可以通過這幾張表根據自己的業務邏輯進行修改調整,總之按照項目的實際業務來。