当前位置: 首页 > news >正文

西安网站建设培训学校和17做网店一样的货源网站

西安网站建设培训学校,和17做网店一样的货源网站,用双语网站做seo会不会,怎么建立一个网站网址一、背景 在使用若依框架#xff08;前后端不分离包含shiro安全框架#xff09;时#xff0c;发现作者添加了验证码、登录帐号控制等自定义过滤器#xff0c;于是对自定的过滤器加载和执行流程产生疑问。下面以验证码过滤器为例#xff0c;对源码解析。注意类之间的继承关…一、背景 在使用若依框架前后端不分离包含shiro安全框架时发现作者添加了验证码、登录帐号控制等自定义过滤器于是对自定的过滤器加载和执行流程产生疑问。下面以验证码过滤器为例对源码解析。注意类之间的继承关系和类中属性存储的值。 二、过滤器加载流程 1、ShiroFilterFactoryBean类创建 1、在ShiroConfig中有ShiroFilterFactoryBean创建及配置类若依中使用的是CustomShiroFilterFactoryBean继承了ShiroFilterFactoryBean其中有两个重要配置一是filters自定义过滤器Map集合key为拦截器别名可以配置在FilterChainDefinitionMap中value值value是过滤器实体二是FilterChainDefinitionMapkey为要过滤的url,value是使用的过滤器别名需要和filters中key值匹配。例如如下图/login及/register两个url会被验证码过滤器过滤。 2、FilterChainManager类创建 1、CustomShiroFilterFactoryBean继承了ShiroFilterFactoryBean实现了FactoryBean类所以spring创建这种类型的类时会执行getObject如果对象不存在则创建执行createInstance。 2、在createInstance 中会执行createFilterChainManager方法创建FilterChainManagercreateFilterChainManager方法中会给FilterChainManager设置两个重要属性第一个遍历1.1处配置filters集合给FilterChainManager中的filters集合赋值key为filter别名value为filter实体此时会给Nameable类型filter设置Name为filter别名。此时FilterChainManager中属性filters中添加了所有自定义过滤器和系统默认的过滤器。系统默认过滤器时在创建对象DefaultFilterChainManager构造方法中调用addDefaultFilters添加DefaultFilterChainManager继承FilterChainManager。 3、获取上面1.1配置FilterChainDefinitionMap过滤器链并遍历,在DefaultFilterChainManager中执行createChain创建过滤器执行链。 filterTokens为filter别名数组遍历数组执行addToChain,第一个参数是url,第二个是filter别名第三个是filter配置参数。继续跟踪addToChain。 4、SimpleNamedFilterList实现了NamedFilterList类addToChain方法中创建SimpleNamedFilterList类ensureChain方法把filter放入SimpleNamedFilterList类属性backingList集合中。DefaultFilterChainManager中属性filterChains中存的是以url为key,value是SimpleNamedFilterList类型的对象。 (5)、总结一下创建DefaultFilterChainManager完成后DefaultFilterChainManager中有两个重要属性一个是filters所有过滤器map集合第二个是filterChains所有url对应过滤器链例如/login对应SimpleNamedFilterList类中属性backingList集合中有invaldRequetFilter、AnonymousFiter、CaptchaValidateFilter三个过滤器。 3、MySpringShiroFilter类创建 PathMatchingFilterChainResolver类中setFilterChainManager把2中创建的DefaultFilterChainManager设置到filterChainManager属性中。创建MySpringShiroFilter时通过构造函数把PathMatchingFilterChainResolver传入。MySpringShiroFilter继承自AbstractShiroFilter最终给AbstractShiroFilter的属性filterChainResolver赋值。 总结一下通过shiroConifg类最终创建出的mySpringShiroFilter继承AbstactShiroFilter,AbstactShiroFilter中属性filterChainResolver为pathMatchingFilterChainResolver,AbstactShiroFilter继承了OncePerRequestFilter,所以在过滤url时执行doFilterInternal方法。 4、过滤器执行流程 doFilterInternal中执行executeChain-getExecutionChain getFilterChainResolver获取PathMatchingFilterChainResolver执行PathMatchingFilterChainResolver中的getChain 如下图执行步骤匹配成功后执行DefaultFilterChainManager类中proxy方法。 通过url获取SimpleNamedFilterList类执行SimpleNamedFilterList类中proxy方法。 创建出ProxiedFilterChain对象其中第二个参数是SimpleNamedFilterList自身。 最终返回ProxiedFilterChain对象执行ProxiedFilterChain中doFilter方法会按顺序执行该url对应的过滤器。 captchaValidateFilter继承关系执行captchaValidateFilter的doFilter方法 时会进入父类OncePerRequestFilter的doFilterInternal 进入父类adviceFilter的doFilterInernal, 进入父类PathMatchingFilter中preHandle,配上url后执行isFilterChainContinued 执行到父类AccessControlFilter的onPreHandle,最终执行到本类CaptchaValidateFilter的onAccessDenied和onAccessDenied方法有一个满足即为true. 执行完成后继续返回到adviceFilter.判断是否继续执行下一个filter。
http://www.w-s-a.com/news/500724/

相关文章:

  • 哪些网站可以免费做产品推广建设建设部网站
  • 网站开发销售怎么做django做网站
  • 淘宝客网站做百度竞价万网域名怎么绑定网站
  • 建设网站找哪个公司北京知名大公司有哪些
  • 专业彩票网站开发网站流量在哪设置
  • 网站建设对应的岗位榆林做网站公司
  • 网站建设公司怎么算专业js网站分页怎么做
  • 网和网站的区别phpcms和帝国cms哪个好
  • wordpress改网站名字长沙网络营销外包
  • 宝塔怎么做第二个网站网站内容设计遵循的原则有
  • 网站违反了 google 质量指南免费ppt模版网站
  • 郑州网站建设郑州网站建设成都那家网站建设好
  • 温州网站排名优化公司如何招聘软件网站开发人员
  • 成都 网站建设公司哪家好襄阳行业网站建设
  • wordpress 调用时间做网站seo的公司哪家好
  • 手机上网站搭建网站账户系统
  • 西乡网站的建设柳州建站
  • 宁夏网站建设怎么样互联网 网站设计
  • 成都关键词seo推广平台手机端关键词排名优化软件
  • 学做软件的网站卡盟平台
  • 网站构建建设案例展示关于做服饰网站的首页
  • 如何建设网站论坛凡科建站手机版登录
  • 建设银行门户网站惠州公司网站建设价格
  • 用python开发网站网站如何取消验证码
  • 公司做企业网站互联网建网站
  • 建网站需要的费用公司注册后怎么做网站
  • 宣传电脑的网站开发运动网站建设教程
  • 网站建设公司都会有哪些花销做网站公司商丘
  • 网站风格有哪些软件定制和开发
  • 公司网络维护具体做什么河南网站推广优化公司哪家好