码迷,mamicode.com
首页 > 编程语言 > 详细

SpringSecurity-ExceptionTranslationFilter的作用

时间:2017-03-26 19:59:06      阅读:375      评论:0      收藏:0      [点我收藏+]

标签:protect   orm   targe   one   for   target   验证码   uri   div   

  ExceptionTranslationFilter捕获异常并做相应的处理。处理逻辑如下:

  1.首先判断是不是SpringSecurity产生的异常,如果是将在handleSpringSecurityException(request, response, chain, ase)处理,否则抛出ServletException/RuntimeException;

  2.handleSpringSecurityException方法首先判断是否是AuthenticationException异常,如果是就跳转到登录页面;否则如果是AccessDeniedException,先判断是否是匿名用户,如果是,也将跳转到登录页面,如果是已认证用户,则交给accessDeniedHandler处理。

  3.跳转到登录界面前,HttpSessionRequestCache会保存当前请求的url,登录认证通过后会直接跳转到之前访问的页面。使用这个功能不能将<form-login>的always-use-default-target属性设置为TRUE,默认是FALSE的。这个逻辑在SavedRequestAwareAuthenticationSuccessHandler中处理。

  4.捕获异常跳转页面时可以根据异常类型在url后面添加对应错误代码,以便在登录页面给出提示信息。一个简单的实现是继承LoginUrlAuthenticationEntryPoint类,然后重写

1 protected String determineUrlToUseForThisRequest(HttpServletRequest request,
2             HttpServletResponse response, AuthenticationException exception) {
3 
4         return getLoginFormUrl();
5     }

在实现体里可以给返回结果添加错误代码。比如如果要在登录页面添加验证码,验证码填写错误抛出一个异常,这里就可以根据异常类型添加对应的错误代码,然后在登录失败页面给出对应提示。

SpringSecurity-ExceptionTranslationFilter的作用

标签:protect   orm   targe   one   for   target   验证码   uri   div   

原文地址:http://www.cnblogs.com/zsxneil/p/6623489.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!