读书人

使用SpringSecurity3用户验证几点体会

发布时间: 2012-09-15 19:09:29 作者: rapoo

使用SpringSecurity3用户验证几点体会(异常信息,验证码)

1. 自定义user-service后,封装自定义异常信息返回

?

通常情况下,抛UsernameNotFoundException异常信息是捕捉不了,跟踪源码后发现

?

?

?

?

而默认情况下,hideUserNotFoundExceptions为true。所以就会导致明明抛UsernameNotFoundException,但前台还是只能捕获Bad credentials的问题。

?

解决办法我们可以直接覆盖org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider的类,然后修改hideUserNotFoundExceptions为false。

?

当然,这样的解决办法并不好。所以,我们还是走正规的途径,自定义org.springframework.security.authentication.dao.DaoAuthenticationProvider来替换默认的即可,即修改配置文件并定义provider,这就是IoC的伟大之处。

?

原来authentication-manager中简单的定义user-service-ref

?

?

?

?

?

现在修改如下:

?

?

?


然后就是在beans内添加定义validateCodeAuthenticationFilter的bean代码

?最后是ValidateCodeAuthenticationFilter的源码:
?附件中有生成CODE图片的JSP(相对比较简单的,但基本可以满足应用),还有文章中用到的一些关键配置文件与源码。
生成验证码的jsp页面调用时直接<img src="./validateCode.jsp" ?/>即可,但刷新时,记得在URL上增加随机数的参数,不然会有缓存导致刷新失败。

添加验证码部分有参考:http://www.iteye.com/topic/720867 1 楼 carrey360 2012-05-04 楼主 你这个 com.foo.security.MyAccessDecisionManager
com.foo.security.MyInvocationSecurityMetadataSource
com.foo.security.MyFilterSecurityInterceptor
这三个是做什么的 为什么要在这配置 2 楼 Kenny.Lee 2012-05-05 carrey360 写道楼主 你这个 com.foo.security.MyAccessDecisionManager
com.foo.security.MyInvocationSecurityMetadataSource
com.foo.security.MyFilterSecurityInterceptor
这三个是做什么的 为什么要在这配置

这篇文章没提到啊...

不过你这个问题可以参考另外的一篇文章 http://kennylee26.iteye.com/blog/899573

读书人网 >编程

热点推荐