SecurityContextPersistenceFilter
2015-10-14 16:31
645 查看
SecurityContextPersistenceFilter
让我们来看一下FilterChainProxy所使用的SecurityContextPersistenceFilter如何配置,一个最基本的配置只需要它的bean自身即可:
<bean id="securityContextPersistenceFilter" class="org.springframework.security.web.context.SecurityContextPersistenceFilter"/>跟我们之前了解到的一样,这个filter有两个主要的任务,第一,它负责在HTTP请求之中保存SecurityContext内容,并且当请求完毕之后清理SecurityContextHolder;第二,最重要的功能是,清理ThreadLocal局部变量,因为一个线程可能会被代替并被放入线程池中,这样一些用户可以访问到security的内容,这个线程可能会在持有坏的凭证的时候可以继续执行一些操作。
SecurityContextRepository
从Spring Security3.0开始,装载并存储security上线文的任务交给了独立的接口:public interface SecurityContextRepository { SecurityContext loadContext(HttpRequestResponseHolder requestResponseHolder); void saveContext(SecurityContext context, HttpServletRequest request, HttpServletResponse response); }HttpRequestResponseHolder是一个与接收的请求和相应对象有关的简单容器,可以用被封装的类来替代他们,返回的内容将被传递到过滤器链。
默认的实现是HttpSessionSecurityContextRepository,它将security上下文保存为HTTPSession属性。这种实现的最重要的配置参数是allowSessionCreation,默认是true,这样当需要一个新的session来保存被认证用户的信息时,就会新创建一个session(当认证已经完成或者security上下文已经改变时,它不会新创建一个session)。如果你不希望创建一个新的session,可以将属性设置为false。
<bean id="securityContextPersistenceFilter" class="org.springframework.security.web.context.SecurityContextPersistenceFilter"> <property name='securityContextRepository'> <bean class='org.springframework.security.web.context.HttpSessionSecurityContextRepository'> <property name='allowSessionCreation' value='false' /> </bean> </property> </bean>或者你可以创建一个NullSecurityContextRepository,的实例,一个“null object”的实现,这样即使在请求期间session一被创建,也可以阻止security上下文被存储。
参考资料来自《Spring Security Reference Documentation(3.1)》,下载地址:http://download.csdn.net/detail/u010009900/9169039
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序