Spring Security:如何让用户打开任何页面的监听器?

时间:2012-12-01 11:15:58

标签: spring spring-security

我需要在尝试加载某个页面时随时处理用户的请求。在这个监听器中,我需要进行一些特殊的检查,结果是关闭或不关闭用户的会话。我应该如何实现这个?看起来像是一项常见的任务,但我对弹簧和弹簧安全性都很陌生。

3 个答案:

答案 0 :(得分:2)

我认为听众是观察行为但不影响行为的东西。由于您提到关闭用户的会话,这肯定会影响用户。因此,我认为你所说的是一个拦截器/过滤器,而不是听众。

Spring为这样的东西提供了一个很好的拦截器框架。

但是,既然你在讨论会话,那么这就是Spring安全的领域。看起来还有另一种处理会话管理的方法:Is it possible to invalidate a spring security session?

答案 1 :(得分:2)

就像Lithium所说,过滤器应该适合处理给定的任务。 Spring Security使用它自己的filter chain(链接指向3.1.x文档),您可以添加自己的过滤器 - 请注意过滤器在链中的位置,here是关于排序。

根据您的要求,此类过滤器可以将用户重定向到另一个页面,而不是请求的一个页面停止执行过滤器链 - 再次:在过滤器链中定位至关重要。

答案 2 :(得分:0)

我认为你应该试试拦截器。更多细节:

  • 创建HandlerInterceptor
public class RequestInitializeInterceptor implements HandlerInterceptor {

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //Code to perform database checks
  }
}
  • 在servlet-context.xml(Servlet的ApplicationContext)文件中定义拦截器
<mvc:interceptors>
    <mvc:interceptor>   
      <!-- Update path as per you requirement --!> 
      <mvc:mapping path="/**"/>  
         <bean class="com.abc.web.support.RequestInitializeInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>