集成Spring需要两大步骤
一、Web.xml配置
1、Shiro通过ShiroFilter入口来拦截需要安全控制的URL,然后进行相应的控制。
2、ShiroFilter类似于如Struts2/SpringMVC这种框架的前端控制器,是安全控制的入口点,其负责读取配置(如ini配置文件),然后判断URL是否需要登陆/权限等工作。
3、DelegatingFilterProxy作用是自动到Spring容器查找名字为shiroFilter(filter-name)的bean并把所有Filter的操作委托给它。
二、Spring集成1、配置SecurityManager,Shiro的核心组件
2. 配置 CacheManager.
2.1 需要加入 ehcache 的 jar 包及配置文件.
3. 配置 LifecycleBeanPostProcessor
4、启用 IOC 容器中使用 shiro 的注解. 但必须在配置了 LifecycleBeanPostProcessor 之后才可以使用.
5、 配置 ShiroFilter
三、部分细节说明:
1、[urls]部分的配置格式是:url=拦截器[参数],拦截器[参数]....;(参数后续解释)
2、若当前请求的url匹配[urls]部分的某个url模式,将会执行其配置的拦截器;(拦截器后续有专题)
3、anon(anonymous)拦截器表示匿名访问(即不需要登陆就可访问);
4、authc(authentication)拦截器表示需要身份认证通过后才能访问(登陆后才能访问)
5、roles[admin]拦截器表示需要有admin角色授权才能访问;
6、perms["user:create"]拦截器表示需要有“user:create”权限才能访问。
四、URL匹配模式
url模式使用Ant风格模式
Ant路径通配符支持?、*、**,注意通配符匹配不包括目录分隔符“/”:
1、?:匹配一个字符,如”/admin?”将匹配/admin1,但不匹配/admin或/admin2; 2、*:匹配零个或多个字符串,如/admin*将匹配/admin、/admin123,但不匹配/admin/1; 3、**:匹配路径中的零个或多个路径,如/admin/**将匹配/admin/a或/admin/a/b。 五、url模式匹配顺序 1、Url采取第一次匹配优先的方式 2、url模式匹配顺序是按照在配置中的声明顺序匹配,即从头开始使用第一个匹配的url模式对应的拦截器链。如: Java代码
- /bb/**=filter1
- /bb/aa=filter2
- /**=filter3
如果请求的url是“/bb/aa”,因为按照声明顺序进行匹配,那么将使用filter1进行拦截。
完整Demo下载地址:https://github.com/GeekerDream/shiro 中的shiro-example-spring |