精华内容
下载资源
问答
  • RBAC

    千次阅读 2019-09-16 21:54:54
    1.什么是RBAC (1)请简述什么是RBAC RBAC即是基于角色的访问控制 2.RBAC96模型介绍 (1)什么是RBAC96模型,还有别的模型吗,分别是什么? RBAC96 模型家族,其中包括了 RBAC0~RBAC3 四个概念模型。 定义了能构成一个 RBAC ...

    1.什么是RBAC

    (1)请简述什么是RBAC
    RBAC即是基于角色的访问控制

    2.RBAC96模型介绍

    (1)什么是RBAC96模型,还有别的模型吗,分别是什么?
    RBAC96 模型家族,其中包括了 RBAC0~RBAC3 四个概念模型。
    定义了能构成一个 RBAC 控制系统的最小的元素集合,RBAC 之中,包含用户 users(USERS)、角色 roles(ROLES)、目标 objects(OBS)、操作 operations(OPS)、许可权 permissions(PRMS)五个基本数据元素,权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。会话 sessions是用户与激活的角色集合之间的映射。RBAC0 与传统访问控制的差别在于增加一层间接性带来了灵活性,RBAC1、 RBAC2、RBAC3 都是先后在 RBAC0 上的扩展

    3.RBAC实战-需求分析和数据库设计

    (1)简述为何要这么设计表结构
    为了更好的规范数据库,通过数据库的设计可以更清晰的展示各个表之间的联系

    4.RBAC实战-创建表

    (1)将设计好的数据库表贴到下面

    CREATETABLE`users`( `username`varchar(50)NOTNULL, `userpwd`varchar(50)DEFAULTNULL, `role_id`int(11)DEFAULTNULL, PRIMARYKEY(`username`), KEY`users_fk`(`role_id`), CONSTRAINT`users_fk`FOREIGN KEY(`role_id`)REFERENCES`roles`(`roleid`) )ENGINE=InnoDBDEFAULTCHARSET=utf8;
    
    
    CREATETABLE`roles`( `roleid`int(11)NOTNULLAUTO_INCREMENT, `rolename`varchar(50)DEFAULTNULL, PRIMARYKEY(`roleid`) )ENGINE=InnoDBDEFAULTCHARSET=utf8;
    
    
    CREATETABLE`menus`( `menuid`int(11)NOTNULLAUTO_INCREMENT,
    `menuname`varchar(50)DEFAULTNULL, `menuurl`varchar(50)DEFAULTNULL, `fatherid`int(11)DEFAULTNULL, PRIMARYKEY(`menuid`) )ENGINE=InnoDBDEFAULTCHARSET=utf8;
    
    CREATETABLE`funs`( `funid`int(11)NOTNULLAUTO_INCREMENT, `funname`varchar(50)DEFAULTNULL, `funurl`varchar(50)DEFAULTNULL, `menu_id`int(11)DEFAULTNULL, PRIMARYKEY(`funid`), KEY`menus_fk`(`menu_id`), CONSTRAINT `menus_fk` FOREIGN KEY (`menu_id`) REFERENCES `menus` (`menuid`) )ENGINE=InnoDBDEFAULTCHARSET=utf8
    CREATETABLE`roles_menus`( `roles_id`int(11)NOTNULL, `menus_id`int(11)NOTNULL, PRIMARYKEY(`roles_id`,`menus_id`), KEY`roles_menus_fk2`(`menus_id`), CONSTRAINT `roles_menus_fk1` FOREIGN KEY (`roles_id`) REFERENCES `roles` (`roleid`), CONSTRAINT `roles_menus_fk2` FOREIGN KEY(`menus_id`) REFERENCES `menus` (`menuid`) )ENGINE=InnoDBDEFAULTCHARSET=utf8;
    

    5.RBAC实战-添加基础数据

    (1)根据课堂内容将基础数据添加到表中,并简述什么是基础数据
    添加数据如上图所示
    所谓的基础数据即是系统运行时最底层的数据,是系统在初始化时就一个具备的内容

    6.RBAC实战-ssm整合

    (1)再次从零开始整合一下ssm框架

    7.RBAC实战-创建pojo

    (1)将创建好的pojo贴到下面,并解释类与类之间的关系.每个类中的属性分别是什么意思

    public class Users 
    { 
    private String username;
     private String userpwd; 
    private Roles roles;
    public Roles getRoles() {
     return roles;
     } 
    public void setRoles(Roles roles)
     { this.roles = roles;
    } 
    public String getUsername() { return username; }
     public void setUsername(String username)
     { this.username = username; } 
    public String getUserpwd() { return userpwd; } 
    public void setUserpwd(String userpwd)
     { this.userpwd = userpwd; }
    }
    
    public class Roles {
     private int roleid; 
    private String rolename; 
    private List<Menus> menus = new ArrayList<>();
    public List<Menus> getMenus() { return menus; } 
    public void setMenus(List<Menus> menus) { this.menus = menus; }
     public int getRoleid() { return roleid; }
     public void setRoleid(int roleid) { this.roleid = roleid; }
     public String getRolename() { return rolename; } 
    public void setRolename(String rolename) { this.rolename = rolename; }
    }
    public class Menus {
    private int menuid; 
    private String menuname;
     private String menuurl; 
    private int fatherid;
     private List<Funs> funs = new ArrayList<>();
     public List<Funs> getFuns() { return funs; } 
    public void setFuns(List<Funs> funs) { this.funs = funs; } 
    public int getMenuid() { return menuid; } 
    public void setMenuid(int menuid) { this.menuid = menuid; } 
    public String getMenuname() { return menuname;
    } 
    public void setMenuname(String menuname) { this.menuname = menuname; }
     public String getMenuurl() { return menuurl; } 
    public void setMenuurl(String menuurl) { this.menuurl = menuurl; }
     public int getFatherid() { return fatherid; }
     public void setFatherid(int fatherid) { this.fatherid = fatherid; }
    }
    
    public class Funs {
    private int funid;
    private String funname;
     private String funurl; 
    public int getFunid() { return funid; }
     public void setFunid(int funid) { this.funid = funid; } 
    public String getFunname() { return funname; }
     public void setFunname(String funname) { this.funname = funname; } 
    public String getFunurl() { return funurl; } 
    public void setFunurl(String funurl) { this.funurl = funurl; }
    }
    

    8.RBAC实战-定义resultMap

    (1)视频中定义resultMap的意义是什么?
    我们在查询结果集时候,用的是多表关联查询,所以我们返回值必须是一个map来封装我们查询的结果

    9.RBAC实战-用户登录(对应视频100-101)

    (1)用户在登录的时候,后台做了哪些业务逻辑处理
    根据username先去查询数据库,如果查询到用户,我们在取出返回值的密码,与用户输入的密码是否一致,如果一致返回user,如果密码不一致,就抛出异常,返回密码有误,或用户名有误

    10.RBAC实战-页面显示(对应视频102-104)

    (1)贴出首页布局的代码

    <%@ 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>Insert title here</title> 
    </head>
     <frameset rows="15%,*,10%" border="1"> 
    <frame src="head" scrolling="no" name="head"> <frameset cols="20%,*"> 
    <frame src="menu" scrolling="auto" name="menu">
     <frame src="body" scrolling="auto" name="body"> 
    </frameset> <frame src="foot" scrolling="auto" name="foot">
     </html>
    

    (2)什么是Dtree,如何使用Dtree,后台需要注意什么?
    首先引入js和css文件
    然后创建form表单
    (3)如何在页面中显示树形菜单?
    使用add方法

    11.RBAC实战-创建用户是否登录Filter

    (1)为什么要检测用户是否登录?
    为了防止用户不登录也能访问首页问题
    (2)简述Filter的检测逻辑是什么
    如果用户访问的是登录页面,放行
    如果访问的不是登录页面,我们先从session中获取数据,判断是否登录,如果session中取出数据则可以放行,如果不能,则重定向到登录页面

    12.RBAC实战-什么是越级访问

    (1)简述什么是越级访问,如何改善?
    通过浏览器地址栏访问越级的功能。使用RBAC的控制对象功能

    13.RBAC实战-录入资源管理基础数据

    (1)将课堂上的代码敲一遍

    14.RBAC实战-查询资源

    (1)将课堂上的代码敲一遍,简述如何查询资源,后台的业务逻辑是如何的.
    使用多表连接查询实现同过用户名查找对于的角菜单、功能等信息。查找到的数据封装进user对象中。

    15.RBAC实战-创建权限过滤器

    (1)创建权限过滤器的意义是什么?权限过滤器的业务逻辑是如何的?
    判断当前用户是否有权限访问该资源,避免用户的越级访问。
    先对静态资源放行,在对用户登录的资源进行放行,再判断当前访问的uri是否在用户的权限之内。使用for循环遍历user对象中存储的功能信息,判断当前uri与功能是否匹配。匹配则放行。不匹配则提示权限不足。

    展开全文
  • rbac

    2019-09-16 21:08:55
    学习主题:rbac 学习目标: 1 掌握rbac 1.什么是RBAC (1)请简述什么是RBAC RBAC(Role-BasedAccessControl )基于角色的访问控制。 RBAC 认为权限的过程可以抽象概括为: 判断【Who 是否可以对 What 进行 How 的访问...

    学习主题:rbac
    学习目标:
    1 掌握rbac

    1.什么是RBAC

    (1)请简述什么是RBAC
    RBAC(Role-BasedAccessControl )基于角色的访问控制。
    RBAC 认为权限的过程可以抽象概括为: 判断【Who 是否可以对 What 进行 How 的访问操作(Operator)】
    Who:权限的拥用者或主体
    What:权限针对的对象或资源
    How:具体的权限
    Operator:操作。
    表明对 What 的 How 操作。也就是 Privilege+Resource Role:角色,一定数量的权限的集合。 权限分配的单位与载体,目的是隔离User与Privilege 的逻辑关系
    (2)什么是RBAC96模型,还有别的模型吗,分别是什么?
    RBAC0 RBAC1、 RBAC2、RBAC3

    2.RBAC实战-需求分析和数据库设计

    (1)简述为何要这么设计表结构
    一个用户对于一个角色,一个角色对于多个用户。用户和角色是多对一的关系。
    每个角色都有多个菜单,角色和菜单是多对多的关系,需要中间表将角色和菜单关联起来。一个菜单有多个功能,菜单和功能是一对多的关系。

    3.RBAC实战-创建表

    (1)将设计好的数据库表贴到下面
    1创建用户表

    CREATETABLE`users`( 
    `username`varchar(50)NOTNULL, 
    `userpwd`varchar(50)DEFAULTNULL,
     `role_id`int(11)DEFAULTNULL, 
     PRIMARYKEY(`username`),
     KEY`users_fk`(`role_id`), 
     CONSTRAINT`users_fk`FOREIGN KEY(`role_id`)
     REFERENCES`roles`(`roleid`) )ENGINE=InnoDBDEFAULTCHARSET=utf8;
    
    
    CREATETABLE`roles`(
     `roleid`int(11)NOTNULLAUTO_INCREMENT, 
     `rolename`varchar(50)DEFAULTNULL, 
      PRIMARYKEY(`roleid`) )ENGINE=InnoDBDEFAULTCHARSET=utf8;
    
    
    CREATETABLE`menus`(
     `menuid`int(11)NOTNULLAUTO_INCREMENT,
     `menuname`varchar(50)DEFAULTNULL, 
     `menuurl`varchar(50)DEFAULTNULL,
     `fatherid`int(11)DEFAULTNULL, 
     PRIMARYKEY(`menuid`) )ENGINE=InnoDBDEFAULTCHARSET=utf8;
    
    CREATETABLE`funs`(
      `funid`int(11)NOTNULLAUTO_INCREMENT, 
      `funname`varchar(50)DEFAULTNULL,
      `funurl`varchar(50)DEFAULTNULL, 
      `menu_id`int(11)DEFAULTNULL,
       PRIMARYKEY(`funid`),
       KEY`menus_fk`(`menu_id`), 
       CONSTRAINT `menus_fk` FOREIGN KEY (`menu_id`) 
       REFERENCES `menus` (`menuid`) )ENGINE=InnoDBDEFAULTCHARSET=utf8
        
    CREATETABLE`roles_menus`( 
    `roles_id`int(11)NOTNULL,
     `menus_id`int(11)NOTNULL, 
     PRIMARYKEY(`roles_id`,`menus_id`),
     KEY`roles_menus_fk2`(`menus_id`), 
     CONSTRAINT `roles_menus_fk1` FOREIGN KEY (`roles_id`) 
     REFERENCES `roles` (`roleid`),
     CONSTRAINT `roles_menus_fk2` FOREIGN KEY(`menus_id`) 
     REFERENCES `menus` (`menuid`) )ENGINE=InnoDBDEFAULTCHARSET=utf8;
    

    4.RBAC实战-添加基础数据

    5.RBAC实战-ssm整合

    (1)再次从零开始整合一下ssm框架

    6.RBAC实战-创建pojo

    (1)将创建好的pojo贴到下面,并解释类与类之间的关系.每个类中的属性分别是什么意思

    package com.bjsxt.pojo;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Users {
        private String username;
        private String userpwd;
        private Roles roles;
        private List<Menus> menus=new ArrayList<>();
        private List<Funs> funs=new ArrayList<>();
    
        public List<Funs> getFuns() {
            return funs;
        }
    
        public void setFuns(List<Funs> funs) {
            this.funs = funs;
        }
    
        public List<Menus> getMenus() {
            return menus;
        }
    
        public void setMenus(List<Menus> menus) {
            this.menus = menus;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getUserpwd() {
            return userpwd;
        }
    
        public void setUserpwd(String userpwd) {
            this.userpwd = userpwd;
        }
    
        public Roles getRoles() {
            return roles;
        }
    
        public void setRoles(Roles roles) {
            this.roles = roles;
        }
    
        @Override
        public String toString() {
            return "Users{" +
                    "username='" + username + '\'' +
                    ", userpwd='" + userpwd + '\'' +
                    ", roles=" + roles +
                    ", menus=" + menus +
                    ", funs=" + funs +
                    '}';
        }
    }
    
    
    package com.bjsxt.pojo;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Roles {
        private int roleid;
        private String rolename;
        private List<Menus> menus = new ArrayList<>();
    
        public int getRoleid() {
            return roleid;
        }
    
        public void setRoleid(int roleid) {
            this.roleid = roleid;
        }
    
        public String getRolename() {
            return rolename;
        }
    
        public void setRolename(String rolename) {
            this.rolename = rolename;
        }
    
        public List<Menus> getMenus() {
            return menus;
        }
    
        public void setMenus(List<Menus> menus) {
            this.menus = menus;
        }
    }
    
    
    package com.bjsxt.pojo;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Menus {
        private int menuid;
        private String menuname;
        private String menuurl;
        private int fatherid;
    
        private List<Funs> funs =new ArrayList<>();
    
        public int getMenuid() {
            return menuid;
        }
    
        public void setMenuid(int menuid) {
            this.menuid = menuid;
        }
    
        public String getMenuname() {
            return menuname;
        }
    
        public void setMenuname(String menuname) {
            this.menuname = menuname;
        }
    
        public String getMenuurl() {
            return menuurl;
        }
    
        public void setMenuurl(String menuurl) {
            this.menuurl = menuurl;
        }
    
        public int getFatherid() {
            return fatherid;
        }
    
        public void setFatherid(int fatherid) {
            this.fatherid = fatherid;
        }
    
        public List<Funs> getFuns() {
            return funs;
        }
    
        public void setFuns(List<Funs> funs) {
            this.funs = funs;
        }
    }
    
    
    package com.bjsxt.pojo;
    
    public class Funs {
        private int funid;
        private String funname;
        private String funurl;
    
        public int getFunid() {
            return funid;
        }
    
        public void setFunid(int funid) {
            this.funid = funid;
        }
    
        public String getFunname() {
            return funname;
        }
    
        public void setFunname(String funname) {
            this.funname = funname;
        }
    
        public String getFunurl() {
            return funurl;
        }
    
        public void setFunurl(String funurl) {
            this.funurl = funurl;
        }
    }
    
    

    7.RBAC实战-定义resultMap

    (1)视频中定义resultMap的意义是什么?
    我们在查询结果集时候,用的是多表关联查询,所以我们返回值必须是一个map来封装我们查询的结果

    8.RBAC实战-用户登录

    (1)用户在登录的时候,后台做了哪些业务逻辑处理
    根据username先去查询数据库,如果查询到用户,我们在取出返回值的密码,与用户输入的密码是否一致,如果一致返回user,如果密码不一致,就抛出异常,返回密码有误,或用户名有误

    9.RBAC实战-页面显示

    (1)贴出首页布局的代码

    <%@ 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>Insert title here</title> 
    </head>
     <frameset rows="15%,*,10%" border="1"> 
    <frame src="head" scrolling="no" name="head"> <frameset cols="20%,*"> 
    <frame src="menu" scrolling="auto" name="menu">
     <frame src="body" scrolling="auto" name="body"> 
    </frameset> <frame src="foot" scrolling="auto" name="foot">
     </html>
    

    (2)什么是Dtree,如何使用Dtree,后台需要注意什么?
    菜单树形显示
    首先引入js和css文件
    然后创建form表单
    (3)如何在页面中显示树形菜单?
    使用add方法

    10.RBAC实战-创建用户是否登录Filter

    (1)为什么要检测用户是否登录?
    为了防止用户不登录也能访问首页问题
    (2)简述Filter的检测逻辑是什么
    如果用户访问的是登录页面,放行
    如果访问的不是登录页面,我们先从session中获取数据,判断是否登录,如果session中取出数据则可以放行,如果不能,则重定向到登录页面

    11.RBAC实战-什么是越级访问

    (1)简述什么是越级访问,如何改善?
    通过浏览器地址栏访问越级的功能。使用RBAC的控制对象功能。

    12.RBAC实战-录入资源管理基础数据

    (1)将课堂上的代码敲一遍

    13.RBAC实战-查询资源

    (1)将课堂上的代码敲一遍,简述如何查询资源,后台的业务逻辑是如何的.
    使用多表连接查询实现同过用户名查找对于的角菜单、功能等信息。查找到的数据封装进user对象中。

    14.RBAC实战-创建权限过滤器

    (1)创建权限过滤器的意义是什么?权限过滤器的业务逻辑是如何的?
    判断当前用户是否有权限访问该资源,避免用户的越级访问。
    先对静态资源放行,在对用户登录的资源进行放行,再判断当前访问的uri是否在用户的权限之内。使用for循环遍历user对象中存储的功能信息,判断当前uri与功能是否匹配。匹配则放行。不匹配则提示权限不足。

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,315
精华内容 14,526
关键字:

rbac