Shiro在Web环境下集成Spring的大致工作流程
1,Shiro提供了对Web环境的支持,其通过一个
ShiroFilter 入口来拦截需要安全控制的URL,然后进行相应的控制。
①配置的
ShiroFilter 实现类为:org.springframework.web.filter.DelegatingFilterProxy 。
②这是一个 Servlet Filter 的代理对象,它在IOC容器中去找实现了Filter接口的bean。
③它可以通过一个初始化参数"targetBeanName"来找到bean,也可以通过<filter-name>找到bean。
2,
ShiroFilter 类似于SpringMvc中的前端控制器,是安全控制的入口点,其负责读取配置文件(如ini配置文件),然后判断该URL是否需要登陆/授权等工作。
①在SpringIOC容器中配置org.apache.shiro.spring.web.ShiroFilterFactoryBean的时候,该bean的名称必须要和
ShiroFilter 的<filter-name>一致。否则在服务加载的时候会报错。因为Shiro会在IOC容器中查找和<filter-name>对应的filter bean。
下面是一个比较基本的Shiro配置内容:
3,受保护的URL如何进行配置
①[urls]部分的配置,其格式为:url=拦截器[参数],拦截器[参数]。
②如果当前请求的url匹配[urls]部分的某个url模式,将会执行器配置的拦截器。
③anon(anonymous)拦截器表示可以匿名访问。
④authc(authencation)拦截器标识需要身份认证通过后才能访问。
⑤logout(logout)拦截器表示登出/退出登录,它
会清空shiro缓存信息。
⑥
url模式使用 Ant 风格模式:
[1]?匹配一个字符;
[2]*匹配零个或多个字符;
[3]**匹配路径中的零个或多个路径;