DAY12-14-RBAC

作者: 建国同学 | 来源:发表于2020-05-14 12:53 被阅读0次

    一、Bootstrap前端框架

    • 由动态 CSS 语言 Less 写成。(重点是响应式,能适应各种各种设备)
    • 文档网址https://v3.bootcss.com/

    使用

      1. 项目中添加 Bootstrap文件目录,粘贴相关的文件
      1. 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 封装集合

    角色去重处理

    1. 页面加载完之后, 先把右边当前员工已经有的角色的id全部放到数组中
      ids = [2,4,5,6]
    2. 遍历左边的集合, 获取到每一个角色的id
    3. 判断该id是否存在ids数组中,如果存在就移除掉, 不存在就保留

    权限管理步骤

    //查询全部权限表达式
    //从spring容器中获取获取所有的controller
    //获取所有value值
    //遍历循环获取每一个controller  
    //获取controller的字节码对象   
    //获取controller的所有方法   
    //遍历出每一个方法    
    //判断是否有贴自定义的权限注解               
    //如果有贴,封装成权限对象,并插入数据库               
    //通过注解获取权限表达式    (方式一)       
    //通过反射拼接权限表达式    (方式二)            
    //判断权限表达式是否已经存在数据库中,如果不存在,就需要插入
    
    • 权限加载前端使用异步的方式提交

    登录功能

    前端 使用异步的方式提交
    后端 登录业务处理, 把当前登录用户放到session中

    权限拦截步骤

    //权限判断逻辑
    //1.获取当前登录用户
    //2.判断用户是否是超级管理员    
        //是 = > 放行    
        //否 = > 3
    //3.获取当前要执行的处理方法(controller中具体要执行的方法)
    //4.判断该方法是否有贴自定义的权限注解    
        //否 => 方法    
        //是 => 5
    //5.获取该方法的权限表达式
    //6.获取当前用户已经拥有的权限表达式集合 
    //7.判断方法的权限表达式是否在该集合中    
        //是 => 放行    
        //否 => 8
    //8.跳转到错误提示的页面
    //9.不放行
    

    相关文章

      网友评论

        本文标题:DAY12-14-RBAC

        本文链接:https://www.haomeiwen.com/subject/zrvznhtx.html