ps:
一.环境:SpringMvc+spring+Mybatis,前后端分离,只支持单台项目(未实现单点登入);
二.需对shiro原理流程,有基础的理解,以及用户权限需求的应用场景明了,能更好项目整合;
三.shiro的基本构成:
1.Subject (接口) : 主体(当前用户) 定义了认证授权的相关函数,通过SecurityManage 安全管理器进行授权按认证
2.SecurityManage (接口) : 框架核心核心 安全管理器,对subject进行认证,授权
3.Authenticator : 认证器,对主体进行认证(登入)
4.Authorizer : 授权器,通过认证后,在访问功能接口时,通过授权器判断用户是否有该功能的操作权限
5.Realm : 读取用户权限数据, 进行安全认证需要通过realm,获取用户权限数据
6.SessionManage : 会话管理器,自定义了一套,不依赖http的session
7.SessionDAO : 操作会话信息,例如将会话信息存储到redis库
8.CacheManage : 缓存管理器 ,将用户权限数据存储在缓存
9.Cryptography : 加密
demo
1.maven依赖:
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-ehcache</artifactId> <version>1.4.1</version> </dependency> <dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> <version>3.8.0</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.1</version> </dependency>
2.spring整合shiro配置:
1)spring.xml <!--自定义的relam--> <bean name="shiroRealm" class="hotkidclub.shiro.ShiroRealm"/> <!--缓存管理器--> <bean name="shiroCacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager"/> <!--shiro安全管理器--> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager