在spring-security.xml文件中配置

在配置文件中我们主要使用标签来过多成配置

<!-- 配置不拦截的资源 -->
<security:http pattern="/login.jsp" security="none"/>
<security:http pattern="/failer.jsp" security="none"/>
<security:http pattern="/css/**" security="none"/>
<security:http pattern="/img/**" security="none"/>
<security:http pattern="/plugins/**" security="none"/><security:http auto-config="true" use-expressions="false"><security:intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN"/><security:form-loginlogin-page="/login.jsp"login-processing-url="/login.do"default-target-url="/index.jsp"authentication-failure-url="/failer.jsp"authentication-success-forward-url="/pages/main.jsp"/>
</security:http>

http标签是自定义标签,我们可以在spring-security-config包中查看

http\://www.springframework.org/schema/security=org.springframework.security.config.SecurityName
spaceHandler

继续查看SecurityNamespaceHandler类,在其init方法

public void init() {loadParsers();
}

在loadParsers()方法中,指定由HttpSecurityBeanDefinitionParser进行解析

parsers.put(Elements.HTTP, new HttpSecurityBeanDefinitionParser());

在HttpSecurityBeanDefinitionParser完成具体解析的parse方法中

registerFilterChainProxyIfNecessary(pc, pc.extractSource(element));

这里就是注册了名为springSecurityFilterChain的filterChainProxy类

接下我们在看一下注册一系列Filter的地方createFilterChain,在这个方法中我们重点关注

AuthenticationConfigBuilder authBldr = new AuthenticationConfigBuilder(element,forceAutoConfig, pc, httpBldr.getSessionCreationPolicy(),httpBldr.getRequestCache(), authenticationManager,httpBldr.getSessionStrategy(), portMapper, portResolver,httpBldr.getCsrfLogoutHandler());

我们可以查看AuthenticationConfigBuilder创建代码

public AuthenticationConfigBuilder(Element element, boolean forceAutoConfig,ParserContext pc, SessionCreationPolicy sessionPolicy,BeanReference requestCache, BeanReference authenticationManager,BeanReference sessionStrategy, BeanReference portMapper,BeanReference portResolver, BeanMetadataElement csrfLogoutHandler) {this.httpElt = element;this.pc = pc;this.requestCache = requestCache;autoConfig = forceAutoConfig| "true".equals(element.getAttribute(ATT_AUTO_CONFIG));this.allowSessionCreation = sessionPolicy != SessionCreationPolicy.NEVER&& sessionPolicy != SessionCreationPolicy.STATELESS;this.portMapper = portMapper;this.portResolver = portResolver;this.csrfLogoutHandler = csrfLogoutHandler;createAnonymousFilter();createRememberMeFilter(authenticationManager);createBasicFilter(authenticationManager);createFormLoginFilter(sessionStrategy, authenticationManager);createOpenIDLoginFilter(sessionStrategy, authenticationManager);createX509Filter(authenticationManager);createJeeFilter(authenticationManager);createLogoutFilter();createLoginPageFilterIfNeeded();createUserDetailsServiceFactory();createExceptionTranslationFilter();
}

springSecurity源码分析-spring-security.xml文件配置相关推荐

  1. 源码分析 - Spring Security OAuth2 生成 token 的执行流程

    说明 本文内容全部基于 Spring Security OAuth2(2.3.5.RELEASE). OAuth2.0 有四种授权模式, 本文会以 密码模式 来举例讲解源码. 阅读前, 需要对 OAu ...

  2. 从源码分析 Spring 基于注解的事务

    从源码分析 Spring 基于注解的事务 在spring引入基于注解的事务(@Transactional)之前,我们一般都是如下这样进行拦截事务的配置: <!-- 拦截器方式配置事务 --> ...

  3. c++ 退出函数_UCOSIII源码分析之——bsp_os.c文件分析

    点击上方公众号名称关注,获得更多内容 ✎ 编 者 悟 语 对于坚持做的人来说,每一次的"如期而至",其实并不需要什么"期待",也没有什么"悬念&quo ...

  4. CloudCompare源码分析:读取ply文件

    CloudCompare源码分析_读取ply文件 写这些博客的原因,是因为打算好好研究一下点云的各种库的源码,其中比较知名的是PCL(point cloud library)和CC(CloudComp ...

  5. Django源码分析4:staticfiles静态文件处理中间件分析

    django源码分析 本文环境python3.5.2,django1.10.x系列1.在上一篇文章中已经分析过handler的处理过程,其中load_middleware就是将配置的中间件进行初始化, ...

  6. 【转】ABP源码分析二:ABP中配置的注册和初始化

    一般来说,ASP.NET Web应用程序的第一个执行的方法是Global.asax下定义的Start方法.执行这个方法前HttpApplication 实例必须存在,也就是说其构造函数必然已完成了执行 ...

  7. Java程序员从笨鸟到菜鸟之(八十一)细谈Spring(十)深入源码分析Spring之HibernateTemplate 和HibernateDaoSupport

    spring提供访问数据库的有三种方式: HibernateDaoSupport HibernateTemplate(推荐使用) jdbcTemplate(我们一般不用) 类所在包: Hibernat ...

  8. Spring源码分析-Spring事务源码分析

    导语      在配置Spring事务管理的时候会用到一个类TransactionInterceptor,从下面的类关系图中可以看到TransactionInterceptor继承了MethodInt ...

  9. springSecurity源码分析-springSecurityFilterChain

    在web.xml文件中配置 问题:为什么DelegatingFilterProxy的filter-name必须是springSecurityFilterChain? DelegatingFilterP ...

最新文章

  1. Java 中字符串的格式化
  2. boost::mp11::mp_iota相关用法的测试程序
  3. DNS高级部署使用RSYNC部署搭建DNS view主从服务
  4. ScrollView 分割屏幕效果
  5. jQuery -- 光阴似箭(五):AJAX 方法
  6. Swift 的函数和闭包
  7. ofo悄然搬离中关村,联合创始人出走,千万用户的押金还能退回来吗?
  8. SpringBoot中获取微信用户信息竟然这么简单!
  9. Java国际化概念和使用介绍
  10. Ubuntu14.04server 安装 fping
  11. 微信花呗真的来了吗?
  12. Square(hdu 1511)
  13. 网络传输中的那些编码之-chr和hex(base16)
  14. 个人网站真能转成商业网站,你能么?
  15. 雷电模拟器frida脱壳
  16. 感觉自己效率太低怎么办?
  17. 一个简单的微分对策问题求解及其Matlab实现
  18. poj1637(混合图判欧拉回路)
  19. bmp180气压传感器工作原理_40张动图,揭示各种传感器工作原理
  20. 操作系统核心知识与重难点

热门文章

  1. JavaScript:事件对象Event和冒泡
  2. MongoDB-JAVA-Driver 3.2版本常用代码全整理(2) - 查询
  3. memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论
  4. zigbee 频谱波段
  5. 数据库3(DBUtils)
  6. 如何更改Joomla中的默认语言
  7. android 设置Button或者ImageButton的背景透明 半透明 透明
  8. 将一个大文件分成若干个小文件方法
  9. 脑芯编:窥脑究竟,织网造芯(二)
  10. react-native项目打包速度优化