1.web.xml
DelegatingFilterProxy就是一个对于servlet filter的代理,用这个类的好处主要是通过Spring容器来管理servlet filter的生命周期,还有就是如果filter中需要一些Spring容器的实例,可以通过spring直接注入,另外读取一些配置文件这些便利的操作都可以通过Spring来配置实现。
在这里的作用是自动到Spring容器查找名字为shiroFilter(filter-name)的bean并把所有Filter的操作委托给它
2.beans
所有spring的请求都讲通过shiroFilter来处理。处理类是org.apache.shiro.spring.web.ShiroFilterFactoryBean其中一个重要的属性是securityManager
the SecurityManager is the heart of Shiro’s architecture,SecurityManager是Shiro体系的核心,登录,授权,session管理功能,缓存功能都是由SecurityManager来管理,相当于一个容器。
Ream主要用来处理登录以及授权,在登录的时候,通过subject的login方法来触发。这里也使用了验证码同样的缓存功能。这里使用的是构造器注入,构造器注入出了注入缓存参数外也注入了
数据库存储的是密文,登录的时候需要对登录密码进行加密,加密方式配置如下,加密后跟数据库存储的密码进行比对,如果错误多次半小时内不让登录,用ehcash缓存。
注意到类里面有一个afterPropertiesSet方法,这个方法的作用是在web应用启动时,IOC会创建RetryLimitCredentialsMatcher这个bean,这个bean创建完后,需要将ehcash被这个bean使用,于是将某个ehcash空间的引用变量赋值给这个bean里的一个map简直对,从而使得对这个键值对的修改都会对ehcash维护的map产生影响。因为他们实际上是同一个东西
shiro的相当多的数据都是存储在ehcash缓存里面的,shiro的缓存是通过cache Manager 来实现的,cache manager的作用是吧缓存设置为ehcash。w
shiro提供remenber me功能。用户登录后,服务端为用户生成一个Token,并放入客户端Cookie中。下次用户登录,服务端验证Cookie中的Token并自动登录
shiro提供会话的功能,提供session的curd,并且这里是用ehcashe来缓存会话信息