基于MySQL数据表实现后台管理系统用户角色设置和菜单权限管理
MySQL 数据表可以用来实现后台管理系统的用户角色设置和菜单权限管理。下面是一个简单的示例:
- 创建用户表
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
`email` varchar(100) NOT NULL,
`role_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 创建角色表
CREATE TABLE `roles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 创建菜单表
CREATE TABLE `menus` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`url` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 创建角色菜单关联表
CREATE TABLE `role_menus` (
`role_id` int(11) NOT NULL,
`menu_id` int(11) NOT NULL,
PRIMARY KEY (`role_id`,`menu_id`),
KEY `menu_id` (`menu_id`),
CONSTRAINT `role_menus_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE,
CONSTRAINT `role_menus_ibfk_2` FOREIGN KEY (`menu_id`) REFERENCES `menus` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 插入数据
INSERT INTO `roles` (`name`) VALUES ('管理员'), ('普通用户');
INSERT INTO `menus` (`name`, `url`) VALUES ('首页', '/index'), ('用户管理', '/users'), ('角色管理', '/roles');
INSERT INTO `role_menus` (`role_id`, `menu_id`) VALUES (1, 1), (1, 2), (1, 3), (2, 1), (2, 2);
- 查询菜单权限
SELECT menus.name, menus.url
FROM roles
INNER JOIN role_menus ON roles.id = role_menus.role_id
INNER JOIN menus ON role_menus.menu_id = menus.id
WHERE roles.id = {role_id};
- 查询用户角色和菜单权限
SELECT users.username, roles.name AS role_name, menus.name AS menu_name, menus.url
FROM users
INNER JOIN roles ON users.role_id = roles.id
INNER JOIN role_menus ON roles.id = role_menus.role_id
INNER JOIN menus ON role_menus.menu_id = menus.id
WHERE users.id = {user_id};
这样就可以通过 MySQL 数据表实现后台管理系统的用户角色设置和菜单权限管理了。在实际应用中,可能还需要进行更多的表设计和数据操作,以满足具体的需求。
原文地址: http://www.cveoy.top/t/topic/p6l 著作权归作者所有。请勿转载和采集!