1.权限
RBAC模型(Role-Based Access Control:基于角色的访问控制)
RBAC的组成:用户、角色和权限。
User(用户):每个用户都有唯一的UID识别,并被授予不同的角色
Role(角色):不同角色具有不同的权限
Permission(权限):访问权限
用户-角色映射:用户和角色之间的映射关系
角色-权限映射:角色和权限之间的映射
1.1 五张表的权限
用户信息表(T_User)
角色信息表(T_Role)
模块信息表(T_Module)
用户角色表(T_User_Role)
角色模块表(T_Role_Module)
角色权限表
1.2 关系
用户角色表(T_User_Role) 角色模块表(T_Role_Module)
用户------------------------>角色------------------------->权限
(T_User) (T_Role) (T_Module)
public List<Module> listModel(int pid) {
List<Module> list = dao.listModel(pid);
for(Module m: list) {
if(m.getUrl() == null || "".equals(m.getUrl().trim())) {
m.setChildren(listModel(m.getId()));
}
}
return list;
}
界面代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>后台管理首页</title>
<!-- 通过include指令引入easyui-link.jsp页面 -->
<%@ include file="/static/common/easyui-link.jsp"%>
<script type="text/javascript">
console.log(xpath);
</script>
<!-- 树形菜单 -->
<script type="text/javascript">
$(function() {
$("#menuTree").tree({
url : xpath + '/PromissionList',
onClick : function(node) {
addoDiv(node);
}
});
});
/* 封装一个新增方法 */
// add a new tab panel
function addoDiv(node) {
/* 设置点击上一级菜单无选项卡出现 */
if (node.id == -1) {
return;
}
/* 通过exists判断选项卡是否存在 */
let flag = $('#oDiv').tabs('exists', node.text);
if (flag == true) {
$('#oDiv').tabs('select', node.text);
return;
}
$('#oDiv').tabs(
'add',
{
title : node.text,
content : node.text,
closable : true,
});
}
</script>
</head>
<body>
<div data-options="fit:true" class="easyui-layout">
<!-- 头部 -->
<div data-options="region:'north',title:'后台管理系统',split:true"
style="height: 30px;"></div>
<div data-options="region:'south',title:'首页底部',split:true"
style="height: 100px;">
<div class="form-group" style="margin-top: 20px;">
<p>©©所有版权信息归碰哒鬼集团所有</p>
</div>
</div>
<div data-options="region:'west',title:'后台菜单',split:true"
style="width: 160px;">
<ul id="menuTree" class="easyui-tree">
</ul>
</div>
<div data-options="region:'center',title:'内容展示📕'"
style="padding: 5px; background: #eee;">
<!-- 选项卡 -->
<div id="oDiv" class="easyui-tabs" data-options="fit:true"></div>
</div>
</div>
</body>
</html>