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类,然后重写

 protected String determineUrlToUseForThisRequest(HttpServletRequest request,
HttpServletResponse response, AuthenticationException exception) { return getLoginFormUrl();
}

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

  5.对于登录时产生的异常,默认的SimpleUrlAuthenticationFailureHandler已经把异常放置到了session中,以便跳转后的页面使用。

request.getSession().setAttribute(WebAttributes.AUTHENTICATION_EXCEPTION,
exception); public static final String AUTHENTICATION_EXCEPTION = "SPRING_SECURITY_LAST_EXCEPTION";

SpringSecurity-ExceptionTranslationFilter的作用的更多相关文章

  1. 【SpringSecurity系列2】基于SpringSecurity实现前后端分离无状态Rest API的权限控制原理分析

    源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...

  2. SpringSecurity在Springboot下使用的初步体验

    SpringSecurity曾经在十年前非常火热,只要是做权限系统,当时几乎非用它不可,记得是在XML文件里一堆的配置.曾几何时,Shiro冒了出来,以其简洁和轻量的风格慢慢地捕获了众多码农的心,从此 ...

  3. Spring Security 接口认证鉴权入门实践指南

    目录 前言 SpringBoot 示例 SpringBoot pom.xml SpringBoot application.yml SpringBoot IndexController SpringB ...

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

    使用过springSecurity的朋友都知道,首先需要在web.xml进行以下配置, <filter>  <filter-name>springSecurityFilterC ...

  5. day5 SpringSecurity权限控制jsr250注解不起作用 AOP日志排除不需要织入的方法 web.xml配置错误码页面

  6. SpringSecurity-FilterSecurityInterceptor的作用

    FilterSecurityInterceptor也是很重要的一个interceptor,它的作用是对request进行权限判断,允许访问或者抛出accessDenied异常. 这个类继承Abstra ...

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

    在网上看各种SpringSecurity教程时,都讲到了SpringSecurity的Filter顺序.但是一直不知道这个顺序在源码中是如何体现的.今天一步一步的查找,最终找到顺序是在FilterCo ...

  8. springboot+mybatis+springSecurity+thymeleaf

    配置步骤: .pom <dependencies> <dependency> <groupId>org.springframework.security</g ...

  9. CAS客户端与SpringSecurity集成

    4. CAS客户端与SpringSecurity集成 4.1 Spring Security测试工程搭建 (1)建立Maven项目casclient_demo3 ,引入spring依赖和spring ...

  10. springSecurity安全框架的学习和原理解读

    最近在公司的项目中使用了spring security框架,所以有机会来学习一下,公司的项目是使用springboot搭建 springBoot版本1.59 spring security 版本4.2 ...

随机推荐

  1. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1)C. Morse Code

    题意:给你n个01字符,每次问你前缀的所有本质不同的子串,由摩斯密码组成的方案数和. 题解:离线处理,把字符建sam,通过topo序来dp计算每个节点表示的子串方案数的和.统计答案时,把n个字符挨个匹 ...

  2. PIL合并4张图demo 800px以下的居中显示小例子

    from PIL import Image #新建一个空白文件 大小为1600*1600 颜色为白色 newIm= Image.new('RGB', (1600, 1600), 'white') #打 ...

  3. vue去掉#——History模式

    打开index.js文件 加在 Vue.use(Router) export default new Router({ mode: 'history', ] }) 若有不明白请加群号:复制 69518 ...

  4. [hdu P1599] find the mincost route

    [hdu P1599] find the mincost route 杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V ...

  5. 原生tab切换(适用于购物商城中订单管理模块,例如:待付款/待发货/待收货等订单状态)

    <!-- 头部tab栏切换 html部分--> <ul class="title-bar"> <li @click="changeStatu ...

  6. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(me

    FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(me ...

  7. 牛客网第4场A

    链接:https://www.nowcoder.com/acm/contest/142/A 来源:牛客网 题目描述 A ternary , , or . Chiaki has a ternary in ...

  8. 如何seo(搜索引擎优化)

    Seo是指遵循搜索引擎的搜索原则,对网站结构.网页文字语言和站点间互动外交等进行合理规划部署,以改善网站在搜索引擎的搜索表现,从而增加客户发现并访问网站的可能性的一个过程.

  9. 超恶心的TP模版取值

    一.JS事件中 在使用H-uiAdmin做后台开发的时候,碰到了使用元素点击触发js函数展示弹窗的写法 但是在js函数中还需要使用U函数生成url以及使用$vo.id来传值 反复试了一下模版标签的写法 ...

  10. 二十六. Python基础(26)--类的内置特殊属性和方法

    二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...