现在的位置: 首页 > 综合 > 正文

[spring security那点事儿]编写自己的过滤器

2013年10月08日 ⁄ 综合 ⁄ 共 5123字 ⁄ 字号 评论关闭

通常而言,使用spring security来进行身份验证的同时,还需要进行一些附加操作,注入校验码检查,session中安全信息的检查,用户最后登录流水记录等。不排除这些在ss执行完成后进入某个页面,在其渲染类中可以实现,但是这样的方式从设计角度而言,是拆分了登录的整个独立过程,是属于单纯的实现功能而实现功能。

所以这里我们就需要封装底层spring security过滤器,以实现自己需求的过滤器。

 

先说第一个常用需求:用户登录的时候检查校验码,并且记录用户的登录流水。

这里的重点在于将这两个逻辑代码切入到过滤器中,我们知道表单方式的身份检查过滤器是AuthenticationProcessingFilter,所以这里我们需要继承其并重写其中的attemptAuthentication(HttpServletRequest request)方法。已达到我们的目的。

注意上面的代码中,对于校验码的检查已经在异步请求中执行过了,只是有一个二次安全检查,其原理是相同的。

然后我们可以配置自己的过滤器:

 

同样的,对于第二个常用需求,就是用户注销后,清空session中的一些附加的重要信息,这里可以使用继承LogoutFilter,并重写其中的doFilterHttp(HttpServletRequest request,HttpServletResponse response, FilterChain chain)方法

这里做的是清空了session中的用户名称和用户id,为什么要这样做呢,因为在此之前我们在session中放入了上述两个值,为了那些配置了不使用ss过滤器而导致无法使用安全上下文取信息的页面。

同样的配置

 

抱歉!评论已关闭.