一、Bootstrap前端框架
- 由动态 CSS 语言 Less 写成。(重点是响应式,能适应各种各种设备)
- 文档网址https://v3.bootcss.com/
使用
- 项目中添加 Bootstrap文件目录,粘贴相关的文件
- html页面引入相关的样式和 JS
<link rel="stylesheet" href="/js/bootstrap/css/bootstrap.css">
<script src="/js/jquery/jquery.min.js"></script>
<script src="/js/bootstrap/js/bootstrap.js"></script>
二、 RBAC权限管理系统
权限管理系统
- 权限管理:
一般指根据系统设置的安全规则或者安全策略,限制用户可以访问而且只能访问自己被授权的资源,从而保障数据资源在合法范围内得以有效使用和管理。 - 权限管理几乎出现在任何系统里面,只要有用户和密码的系统
-
基于角色访问控制(RBAC: Role Based Access Control)[使用最多]
RBAC
RBAC重要对象
- 用户(User):角色施加的主体;用户通过拥有某个或多个角色以得到对应的权限。
- 角色(Role):表示一组权限的集合。
权限(Permission):用于限定能够访问的一个资源。
环境搭建
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
分页插件
<script src="/js/jquery/jquery.min.js"></script>
<script src="/js/bootstrap/js/bootstrap.js"></script>
<script src="/js/plugins/twbsPagination/jquery.twbsPagination.min.js"></script>
<input type="hidden" name="currentPage" id="currentPage" value="1">
<div style="text-align: center;">
<ul id="pagination" class="pagination"></ul>
</div>
$("#pagination").twbsPagination({
totalPages: ${result.totalPage},
startPage: ${result.currentPage},
visiblePages:5,
first:"首页",
prev:"上页",
next:"下页",
last:"尾页",
onPageClick:function(event,page){ //点击页码的时候会执行的方法
$("#currentPage").val(page);
$("#searchForm").submit();
}
});
角色左移右移处理
1.打开员工input页面时, 查询所有的角色,并且放入下拉框
2.点击 > 按钮后, 找到左边下拉框中选中的数据
var options = $(".allRolesoption:selected")
3.把这些数据移动到右边
$(".selfRoles" ).append(options)
提交表单的bug
提交表单时, 只会提供下拉框中选中的数据,
解决: 在提交表单之前, 设置下拉框中的所有option都有selected属性
角色回显
collection 封装集合
角色去重处理
- 页面加载完之后, 先把右边当前员工已经有的角色的id全部放到数组中
ids = [2,4,5,6] - 遍历左边的集合, 获取到每一个角色的id
- 判断该id是否存在ids数组中,如果存在就移除掉, 不存在就保留
权限管理步骤
//查询全部权限表达式
//从spring容器中获取获取所有的controller
//获取所有value值
//遍历循环获取每一个controller
//获取controller的字节码对象
//获取controller的所有方法
//遍历出每一个方法
//判断是否有贴自定义的权限注解
//如果有贴,封装成权限对象,并插入数据库
//通过注解获取权限表达式 (方式一)
//通过反射拼接权限表达式 (方式二)
//判断权限表达式是否已经存在数据库中,如果不存在,就需要插入
- 权限加载前端使用异步的方式提交
登录功能
前端 使用异步的方式提交
后端 登录业务处理, 把当前登录用户放到session中
权限拦截步骤
//权限判断逻辑
//1.获取当前登录用户
//2.判断用户是否是超级管理员
//是 = > 放行
//否 = > 3
//3.获取当前要执行的处理方法(controller中具体要执行的方法)
//4.判断该方法是否有贴自定义的权限注解
//否 => 方法
//是 => 5
//5.获取该方法的权限表达式
//6.获取当前用户已经拥有的权限表达式集合
//7.判断方法的权限表达式是否在该集合中
//是 => 放行
//否 => 8
//8.跳转到错误提示的页面
//9.不放行
网友评论