SpringSecurity-ExceptionTranslationFilter的作用

  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     }

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

时间: 2024-12-17 01:20:21

SpringSecurity-ExceptionTranslationFilter的作用的相关文章

[转]springSecurity源码分析—DelegatingFilterProxy类的作用

使用过springSecurity的朋友都知道,首先需要在web.xml进行以下配置, <filter>  <filter-name>springSecurityFilterChain</filter-name>  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param>         <para

SpringSecurity的Filter执行顺序在源码中的体现

在网上看各种SpringSecurity教程时,都讲到了SpringSecurity的Filter顺序.但是一直不知道这个顺序在源码中是如何体现的.今天一步一步的查找,最终找到顺序是在FilterComparator中定义的. 先看一下代码: /** * An internal use only {@link Comparator} that sorts the Security {@link Filter} * instances to ensure they are in the corre

SpringSecurity 依据用户请求的过程进行源码解析

SpringSecurity实现安全管理主要通过滤器(filter).验证器(AuthenticationManager).用户数据提供器(ProviderManager).授权器(accessDecisionManager).投票器(AccessDecisionVoter)这几个基本模块协作完成的.大概分为两个部分 用户验证 和授权 这个两个部分.这个部分主要在AuthenticationProcessingFilter和AbstractSecurityInterceptor中完成. 使用过S

SpringSecurity工作原理小解读

SecurityContextPersistenceFilter ConcurrentSessionFilter WebAsyncManagerIntegrationFilter HeaderWriterFilter CsrfFilter LogoutFilter UsernamePasswordAuthenticationFilter DefaultLoginPageGeneratingFilter RequestCacheAwareFilter SecurityContextHolderAw

Spring-Security完整实例

1.收集资料 http://blog.csdn.net/k10509806/article/details/6369131 http://www.cnblogs.com/wenxiu/archive/2011/01/22/1942084.html http://ootabc.iteye.com/blog/688213 http://wenku.baidu.com/view/abf23846336c1eb91a375d83.html http://www.cnblogs.com/zhanglian

SpringMVC+springSecurity+flexPaper 配置--类似百度文库在线预览

背景:现在项目需要做一个类似百度文库的在线预览功能,在网上找了下很多人推荐使用FlexPaper,所以今天尝试学习了FlexPaper顺便集成到现有的框架中 由于网上目前的说的都不是很详细,所以现在记录在此,希望对需要的人有所帮助 准备:1. FlexPaper_2.2.4.zip 下载地址:http://flexpaper.devaldi.com/download/             2.swftools 下载地址:http://www.swftools.org/download.htm

SpringSecurity的简单应用(一)

java项目首先要提的就是jar包了,Springsecurity的jar下载地址:http://static.springsource.org/spring-security/site/downloads.html.不过我的项目里的jar包比较旧点了,是从以前项目抽取出来的,我的工程结构图如下: 如果是maven项目则可以使用下面的pom.xml: <dependencies> <dependency> <groupId>junit</groupId> &

利用springsecurity做用户权限限制

一.概述 不同的user(用户)需要不同的role(角色),不同的role(角色)又会需要不同的resource(资源权限),比如说我王二,是个管理员(admin),我的权限大到什么都能操作,包括新建一个代理(proxy),再比如说我弟弟王三,是个代理(proxy),他却不能新建代理,他权限不够大. 利用springsecurity来实现的话,就非常简便(当然了,必须先做点准备工作). <security:authorize name="newAgentPage"> <

SpringSecurity 3.2入门(6)简单介绍默认使用的十一个过滤器

Security提供了20多个filter,每个过滤器都提供特定的功能.这些filter在Spring Security filter过滤器链中的缺省顺序由 org.springframework.security.config.http.SecurityFilters枚举类型定义.通过filter机制,Spring Security实现了安全认 证和授权等安全相关工作.用户通过配置文件,可以插入.替换或去除已知的filter,搭配自己的Spring Security filte过滤器链, 从而