Shiro 权限拦截

Shiro 和 Spring Security 一样,都是基于过滤器来实现权限拦截的。shiro 中默认的过滤器:

过滤器链:

过滤器类图:

Shiro 会话管理

Shiro 提供了完整的企业级会话管理功能,不依赖于底层容器(如 Tomcat),不管是 J2SE 还是 J2EE 环境都可以使用,提供了会话管理,会话事件监听,会话存储 / 持久化,容器无关的集群,失效 / 过期支持,对 Web 的透明支持,SSO 单点登录的支持等特性。

建议在开发中,Controller 层使用原生的 HttpSession 对象,在 Service 层中使用 Shiro 提供的 Session 对象。如果在 Service 层中使用 HttpSession 对象,那么属于侵入式,并不建议这么做。Shiro 提供的 Session 能够很好的解决这个问题。

会话管理相关类图:

Shiro 权限缓存

缓存是 ××× 能的重要手段,对同一批数据进行多次查询时, 第一次查询走数据库,查询数据后,将数据保存在内存中,第二次以后查询可以直接从内存获取数据,从而不需要和数据库进行交互。这样减少了系统查询数据库的次数,提升了性能。

缓存适合那些经常不变动的数据,比如系统中用户的信息和权限不会经常改变,特别适合缓存起来供下次使用。其中我们的权限信息就是不怎么会改变的,对权限信息进行缓存可以提高我们系统的性能。不过 Shiro 自身不实现缓存,而是提供缓存接口,让其他第三方实现,默认支持 EhCache 和 MapCache 缓存

Shiro 缓存相关的类图: