权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。本系统基于JSP+Servlet+JDBC+LayUI的技术,在系统的设计与开发过程中严格遵守软件工程的规范,运用软件设计模式,从而减少系统模块间的偶合,力求做到系统的稳定性、可重用性和可扩充性。
需求
通用的权限管理系统需要考虑用户权限控制问题,可以采用RBAC(基于角色的访问控制)模型进行设计和实现。
基于角色的访问控制系统可以通过确定用户所扮演的角色和其权限来实现对不同操作和资源的限制和控制。包括用户管理、角色管理、权限管理等模块,实现对用户、角色、权限的统一管理和控制。
1. 用户登录;
2. 用户管理:选择角色添加用户,修改某个用户的信息,删除某个用户的信息,根据用户名或者角色查询符合条件的用户信息;
4. 角色管理:对角色基本信息的增删改查操作;
5. 菜单管理:在某个父级菜单下添加子菜单信息,删除选择的菜单及其子菜单信息,修改某个菜单的信息;
系统的功能模块图如下图所示:
数据库设计
表关系是指表之间的关系,包括主外键、外键、唯一键等。在设计表关系时,需要确定表之间的关系,并为每个表创建一个唯一的标识符。
用户——角色——菜单,思考三张表之间有怎样的关系。
用户面对角色:一个用户可以有多个角色,一个角色也可以有多个用户。但一般我们只分配一个角色,所以也可以在用户表中再加一个角色id。
角色面对菜单:一个角色可以有多个菜单,一个菜单也可以被多个角色拥有。所以也是多对多的关系。那么就要有角色菜单关联表(RoleMenus):角色id、菜单id。
效果
部分代码
layui.config({
base: '../layui/'
}).use(['layer', 'util', 'treeTable', 'iconPicker','form'], function () {
var $ = layui.jquery;
var layer = layui.layer;
var util = layui.util;
var treeTable = layui.treeTable;
var iconPicker = layui.iconPicker;
var form = layui.form;
$('body').removeClass('layui-hide');
// 渲染表格
var menuTable = treeTable.render({
elem: '#demoTreeTb',
url: '../menu?type=getMenu',
toolbar: '#toolbar',
height: 'full-100',
tree: {
iconIndex: 2,
isPidData: true,
idName: 'mid',
pidName: 'pid'
},
defaultToolbar: ['filter', 'print', 'exports'],
cols: [
[
{
type