关于shiro的概念及学习路线shiro学习
讲的很好了,我这里只是记录下自己的一些体会,首先整合shiro还是用之前的图书管理系统,是基于这一版activeMQ实践(三)—用spring-activemq实现图书的新增来整合的,结构有点改变首先放项目的github地址:shiro+springmvc
shiro的在一般的使用使用场景中一般和spring结合在一块就能满足大部分功能的开发了,如果是单纯的去学习使用还是学习很快的,我们只需要理解中心思想:
一个用户可以分配给它多个角色,而一个角色可以分配给它多个权限。
在程序中通过权限控制谁能访问某个资源,角色聚合一组权限集合;这样假设哪个角色不能访问某个资源,只需要从角色代表的权限集合中移除即可;无需修改代码
所以我们需要在数据库里添加用户表,角色表以及权限表。
主要通过这三张表来关联,很明显能看出来角色是权限和用户的维系者,这个从我们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。
最后的效果图: