随笔分类 -  SpringSecurity源码赏析

摘要:在阅读FilterSecurityInterceptor的doFilter代码时发现了这个FilterInvocation类,这个类的作用本身很简单,就是把doFilter传进来的request,response和FilterChain对象保存起来,供FilterSecurityInterceptor的处理代码调用。 如果我来写FilterSecurityInterceptor类的代码时,FilterInvocation类的出生机率会很小,一般都会直接把doFilter的参数要么保存在FilterSecurityInterceptor类的相关属性里,要么就是直接传进来用,并且不断地在各个方法. 阅读全文
posted @ 2012-03-21 00:35 杭州胡欣 阅读(4345) 评论(0) 推荐(0) 编辑
摘要:经常看到一些开发团队在项目开发中,想重用一些代码,最低层次的代码重用其实就是写工具类,不过我这里想说的是,在web项目中常用的一些工具类不妨看一下springframework中的util包中的类,非常实用,最近在看springSecurity源码时就看到这样的一个类TextEscapeUtils,作用是用来进行URL编码的,并且做一些用户表单数据的非法输入字符的判断,具体代码如下:public abstract class TextEscapeUtils { public final static String escapeEntities(String s) { if ... 阅读全文
posted @ 2012-01-07 15:35 杭州胡欣 阅读(1283) 评论(0) 推荐(1) 编辑
摘要:笔者一直认为阅读源码是最好的提高代码水平的方式,在阅读springSecurity源码过程中深深体会到这一点,有些代码虽然学到的只是一些细节,但是水平的提高有时就是来源于这些点滴的积累。 下面开始分析org.springframework.security.config.http.SecurityFilters类的源码, 这是一个Enum类,记得在C++中Enum类是非常常用的,主要目的:枚举变量,此类型的变量只可以取一个固定集合中的值。并且这些值是按一定顺序进行排列的。 首先enum SecurityFilters 类的定是没有描述符的,说明只限在包内可访问。下面是源码,具体用法我都加了自. 阅读全文
posted @ 2011-12-22 14:51 杭州胡欣 阅读(1184) 评论(0) 推荐(0) 编辑
摘要:使用过springSecurity的朋友都知道,首先需要在web.xml进行以下配置,springSecurityFilterChainorg.springframework.web.filter.DelegatingFilterProxy targetFilterLifecycle ... 阅读全文
posted @ 2011-12-19 18:36 杭州胡欣 阅读(37853) 评论(11) 推荐(5) 编辑
摘要:需要注意,如果use-expressions="true"或"false"的配置方式是不一样的,如果启用表达式,则需要看一下org.springframework.security.access.expression.SecurityExpressionRoot类就能明白如何使用,该类是个抽象类,但类中并无抽象方法,这样设计一定有其用意,这个等过段时间了解了再写。示例如下:<s:http auto-config="true" use-expressions="true"><s:intercept- 阅读全文
posted @ 2011-12-16 19:03 杭州胡欣 阅读(11619) 评论(0) 推荐(0) 编辑
摘要:AbstractUserDetailsAuthenticationProvider类位于org.springframework.security.authentication.dao包下,在org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter中被调用,该类的public Authentication authenticate(Authentication authentication) throws AuthenticationException方法百常重要,通过这段代码能详细了 阅读全文
posted @ 2011-12-14 14:39 杭州胡欣 阅读(12145) 评论(0) 推荐(2) 编辑
摘要:springSecurity的登录验证是由org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter这个过滤器来完成的,在该类的父类AbstractAuthenticationProcessingFilter中有一个AuthenticationManager接口属性,验证工作主要是通过这个AuthenticationManager接口的实例来完成的。在默认情况下,springSecurity框架会把org.springframework.security.authentication. 阅读全文
posted @ 2011-12-14 11:33 杭州胡欣 阅读(14849) 评论(0) 推荐(0) 编辑
摘要:以往在使用异常时,只是知道通过异常类的构造方法设置一些出错信息,此外最多就是把引起该异常的原因通过Throwable类的子类一同设置进去。今天在分析springSecurity3.0.5的框架时,看到AuthenticationException这个异常类(用在验证时)的源码,发现这个异常类除了上述常见的用法外,还把Authentication(验证信息)的做为属性放到了异常类中,当验证出错时AuthenticationException抛出时,Authentication(验证信息)一同被抛出了,这样捕获异常的类就能得到更丰富的信息,有些数据还可以通过异常类返回给调用者。看了这样的代码,思路 阅读全文
posted @ 2011-12-12 17:22 杭州胡欣 阅读(893) 评论(1) 推荐(0) 编辑