shiro+springmvc图书系统新增图书权限认证

来源:互联网 发布:mac 下面菜单栏不见了 编辑:程序博客网 时间:2024/05/21 17:02

关于shiro的概念及学习路线shiro学习
讲的很好了,我这里只是记录下自己的一些体会,首先整合shiro还是用之前的图书管理系统,是基于这一版activeMQ实践(三)—用spring-activemq实现图书的新增来整合的,结构有点改变首先放项目的github地址:shiro+springmvc
shiro的在一般的使用使用场景中一般和spring结合在一块就能满足大部分功能的开发了,如果是单纯的去学习使用还是学习很快的,我们只需要理解中心思想:

一个用户可以分配给它多个角色,而一个角色可以分配给它多个权限。

在程序中通过权限控制谁能访问某个资源,角色聚合一组权限集合;这样假设哪个角色不能访问某个资源,只需要从角色代表的权限集合中移除即可;无需修改代码
所以我们需要在数据库里添加用户表,角色表以及权限表。
用户表,它和角色表用roleId关联

角色表

权限表,权限表也通过roleId关联,这里我们给roleId为1的角色admin配置了add图书的权限

主要通过这三张表来关联,很明显能看出来角色是权限和用户的维系者,这个从我们UserMapper.xml的查询语句也能看出来。

然后项目关键代码,首先肯定是controller,我这里直接截图来看,源代码上面的github地址已经放出来了:

这里写图片描述

这里写图片描述

上面的图分别是UserController和我们自定义用来验证的MyRealm类,我打了四个断点,执行顺序如图:
获取主体(代表用户),然后拿到token(用户密码),去login,login先验证用户,再验证权限。
基本上一个shiro登录验证就这样完成了,而我们主要去配置的相关信息是在spring-dao.xml中配置的:

这里写图片描述

spring-dao.xml内容很多,shiro大多数配置都是按部就班,主要是在图中圈出的部分配置我们的权限。
这里表示游客用户可以访问login,admin下的资源都只允许认证通过的用户访问,/book/addPage 该url只允许有add权限的用户访问。
对应到list.jsp中的一个显示模块就是:

这里写图片描述

只有拥有add权限(数据库配好的角色admin用户为zhangs)才能看的见这个模块,lis的角色就没有add权限在这里就看不见,同理由于spring-dao.xml shiro过滤链的配置也不能访问http://localhost:8080/book/addPage。

最后的效果图:
没有add图书权限的lis登录

有add权限的zhangs登录

原创粉丝点击