1.循环验证,一直报AccessDeniedException
先出现了,凡是访问被保护的URL,日志就不断报错:Access is denied。
阅读了网上一篇博文,http://www.iteye.com/problems/41635,并按照修改。
无济于事,仔细检查,发现由于自己保护了"/**"URL,也就是说,如果访问一个受保护的页面,而又无权访问,就会跳转到指定的“/errors/accessDenied.jsp",但该error page 也是属于“/**”的,所以就出现循环验证的结果了,直到请求超时!
2.struts的请求没有经过springsecurity的Filter
发现struts action的请求居然没有被SS过滤。由于之前看了上述博文,立即反应过来,Filter顺序问题 !由于struts的filter先拦截了请求,并做了相应处理,返回请求,所以根本就没有ssFilter的机会了。在web.xml中调整了springsecurity的filter,将它放到struts的前面,成功。
由此也可以猜测该博文的解决方法是有疑问的了,既然springsecurity已经先拦截了请求,并且做出拒绝跳转,那么struts也就没有机会相应请求了,那就跟不存在“struts拦截了spring Security的org.springframework.security.AccessDeniedException异常”的说法了。当然没有去深究此想法!
3.UrlMatcher规则正确,却没有被匹配
自定义FilterInvocationDefinitionSource,仔细检查了匹配规则,但除了“/**”都没被匹配成功,调试发现,虽然有lowerCaseComparisons变量,并且有设值,但在匹配前并没有做toLowerCase()处理。之前一直被日志迷惑,日志显示有转换为小写的处理,但那是FilterChainProxy的内置处理!
4.登录不成功bad Credentials
配置了验证的时候MD5加密,但是数据库的测试数据却还是明文!
总结:1.有错时,不应该急着求助别人或者网上搜索(其实也是求别人吧),应该仔细阅读日志,有些问题看下日志就明白。
2.虽然解决后都觉得是些很小的问题,但是解决了这些问题也就有了相应的经验了,现在遇到总比工作遇到好。再小的问题,不解决也终究是个问题:) 自我安慰吧 !