ssm启动报错cannot find class_SSM整合补充 RBAC(权限控制)过滤器

5c4903d0e54419a07d45744d35ae7b2f.png

1. 什么是RBAC

(1) 请简述什么是RBAC

RBAC(Role-Based Access Control)基于角色的访问控制

RBAC认为权限的过程可以抽象概括为:

判断 [Who 是否可以对 What 进行 How的访问操作(Operator)]

Who:权限的拥有者或主键

What:权限针对的对象或资源

How:具体的权限

Operator:操作.表明对 What的How操作,也就是Privilege+Resource

Role:角色 ,一定数量的权限的集合,权限分配的单位和载体,目的是隔离User

和Privilege的逻辑关系

2. RBAC96模型介绍

(1) 什么是RBAC96模型,还有别的模型吗,分别是什么?

RBAC96模型家族,其中包括了RBAC0-RBAC3 四个概念模型

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

(1) 简述为何要这么设计表结构

对应RBAC的各个关系

4. RBAC实战-创建表

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

eb279b081dfd78a11fdc198a4c890321.png

52ba5abff2c9195dcc01fbff85d2c803.png

80f5960a7b6a42d16de4357638b80d36.png

c3c0b5949351f5f7764d71f19ddf678a.png

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

(1) 根据课堂内容将基础数据添加到表中,并简述什么是基础数据

系统运行时提供的最底层的数据

6. RBAC实战-ssm整合

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

1. 配置web,xml文件

1.1:配置服务器上下文参数(告诉spring配置的文件路径)

参数:contextConfigLocation

1.2:配置监听(在服务器启动时创建spring容器对象)

Class:ContextLoaderLister

1.3:配置springmvc

Servlet-Class:DispatcherServlet

1.3.1:配置control的上下文文件,告诉springmvc文件配置路径

参数:contextConfigLocation

1.3.2:拦截的所有请求交给DispatcherServlet处理器处理

2. 配置jdbc.properties(数据库连接文件)

3. 配置`MyBatis文件()

4. 配置application-dao.xml

4.1配置properties文件 context:property-placeholder

4.2:配置数据源(c3p0,spring内置等等)

4.3:创建mybatis的上下文对象

4.3.1:传入数据原

4.3.2:传入mybatis.xml文件(如果你有)

4.4:注册注解扫描器(扫描mapper映射包)

Class:MapperScannerConfigurer

5. 配置application-service

5.1:配置service注解扫描器

Context:component-scan base-package=”service包名”

6.配置application-trans

6.1配置事务管理器切面(面向AOP切面编程)

Class:DataSourceTransactionManager(切面的接口) id:切面id

6.2:配置事务传播行为 (那些方法应该收什么样的事务控制)

Tx:advice transaction-manager: 参考切面id id:事务行为id

6.3配置切面插入的切点

Aop:advisor advice-ref:参考事务行为id

Pointcut=execution(* service.*.*.(..))

6. 配置SqlMapperClient.xml(是springmvc的父容器)

1. 扫描contrrl包下的注解

2. 开启注解驱动 (父容器开启驱动子容器直接容器)

3. 静态资源因映射(放行静态资源)

7. RBAC实战-创建pojo

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

20c12a6f8ce81fed9253c2bc4b5d94a6.png

926f5dc8dfd960cc2f9501ee63722f5c.png

6bcd0a4e50e8744cc55580f6a28b625f.png

8237e7be074e5b8326de4386e6dfa5f2.png

8. RBAC实战-定义resultMap

(1) 视频中定义resultMap的意义是什么?

用来处理对象关系的(配置对象关系)

<resultMap type="com.bjsxt.pojo.Users" id="userMapper">

<id property="username" column="username"/>

<result property="userpwd" column="userpwd"/>

<!--描述对象关系 配置关联对象 roles-->

<association property="roles" javaType="com.bjsxt.pojo.Roles">

<id property="roleid" column="roleid"/>

<result property="rolename" column="rolename"/>

</association>

<!--描述集合关系 配置管理对象 Menus -->

<collection property="menus" ofType="com.bjsxt.pojo.Menus">

<id property="menuid" column="menuid"/>

<result property="menuname" column="menuname"/>

<result property="menuurl" column="menuurl"/>

<result property="fatherid" column="fatherid"/>

</collection>

</resultMap>

分享/讲解/扩展思考

点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。

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

(1) 用户在登录的时候,后台做了哪些业务逻辑处理

1.根据用户名称查询用户所有数据

2.判断查询用户是否为空

3.判断密码是否一致

Users user = userMapper.findUserByName(username);

if (user==null) {

//用户名不存在

throw new UsersException("用户名不存在");

}else if(!userpwd.equals(user.getUserpwd())){

//密码不正确

throw new UsersException("密码有误");

}

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

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

(2) 什么是Dtree,如何使用Dtree,后台需要注意什么?

javaScript树形菜单

1,参数可以不写完,有默认值(从左至右,依次省略),例tree.add(id,pid,name,url);后面5个参数就可以省略

2,有间隔时的默认值(如存在第6个参数,但第5个参数想用默认值),即tree.add(id,pid,name,url,"",target);必须这样写tree.add(id,pid,name,url,"","","","",true);

3,特殊:如果需要显示title(参数5)必须设定相应链接地址(参数4),tree.add(2,0,‘照明控制系统’,‘a.jsp’,‘这是第四个参数title’);?//如果第四个参数为空则无法显示

(3) 如何在页面中显示树形菜单?

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

(1) 为什么要检测用户是否登录?

我们可以直接通过地址栏直接访问数据,而我们不允许这种情况发生

(2) 简述Filter的检测逻辑是什么

在用户访问资源之前,将请求拦截,先进行验证,验证成功就通过,验证不成功就跳到另外的界面

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

(1) 简述什么是越级访问,如何改善?

低权限的用户访问高级别的资源

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

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

14. RBAC实战-查询资源

(1) 将课堂上的代码敲一遍,简述如何查询资源,后台的业务逻辑是如何的.

我们需要在Users实体类中添加funs属性用来存储数据

private List<Funs> funs = new ArrayList<>();

在userMapper.xml中进行配置信息

f3ef07ef4900d2ae0667718220ee3de6.png

更改sql查询语句

91cbceaf3c1e9be36204739ebd9cd947.png

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

(1) 创建权限过滤器的意义是什么?权限过滤器的业务逻辑是如何的?

为了防止越级访问,每个角色都有特定的权限,分清界限

1.拦截所有请求

2.放行静态页面请求 和 登录页面请求

3.对请求地址进行判断是否拥有权限(数据库查询),有则放行,没有权限则跳转到指定页面

public void doFilter(ServletRequest arg0, ServletResponse arg1,

FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest)arg0;

HttpServletResponse response =(HttpServletResponse)arg1;

HttpSession session=request.getSession();

//获取访问路径uri

String uri=request.getRequestURI();

//取出User中的find数据

Users user=(Users) session.getAttribute("user");

//对静态资源放行

if (uri.endsWith(".js") || uri.endsWith(".css") || uri.endsWith(".gif")) {

chain.doFilter(arg0, arg1);

}else {

if (uri.indexOf("login")!=-1 || uri.indexOf("userlogin")!=-1) { //对login和userLogin.jsp放行

chain.doFilter(arg0, arg1);

}else {

List<Funs> funList= user.getFuns();

//开关

boolean flag=false;

for (Funs fun:funList) {

//判断查询的权限和访问的地址是否相等

if (uri.indexOf(fun.getFunurl())!=-1) {

flag=true;

break;

}

}

if (flag) {

chain.doFilter(arg0, arg1);

}else {

response.sendRedirect("roleerror");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值