Spring Security——08,自定义失败处理

本文介绍了如何在SpringSecurity中自定义认证和授权失败的异常处理,通过实现AuthenticationEntryPoint和AccessDeniedHandler,并提供实际的测试案例,确保在认证错误或权限不足时返回统一的JSON格式响应。
摘要由CSDN通过智能技术生成


我们还希望在认证失败或者是授权失败的情况下也能和我们的接口一样返回相同结构的json,这样可以让前端能对响应进行统一的处理。要实现这个功能我们需要知道SpringSecurity的异常处理机制。

在SpringSecurity中,如果我们在认证或者授权的过程中出现了异常会被ExceptionTranslationFilter捕获到。在ExceptionTranslationFilter中会去判断是认证失败还是授权失败出现的异常。

如果是认证过程中出现的异常会被封装成AuthenticationException然后调用AuthenticationEntryPoint对象的方法去进行异常处理。

如果是授权过程中出现的异常会被封装成AccessDeniedException然后调用AccessDeniedHandler对象的方法去进行异常处理。

所以如果我们需要自定义异常处理,我们只需要自定义AuthenticationEntryPoint和
AccessDeniedHandler然后配置给SpringSecurity即可。

一、自定义实现类

1.1 实现AccessDeniedHandler

在这里插入图片描述

1.2 实现AuthenticationEntryPoint

在这里插入图片描述

二、配置SpringSecurity

在这里插入图片描述

三、测试

3.1 认证失败

使用postman,发送一个请求,当我们使用错误名称发送的时候,会返回认证失败请重新登录,没有问题

在这里插入图片描述
流程是这样的:

当我们用户名或者密码错误,抛出异常的时候,会被AuthenticationEntryPointImpl给捕获到,就会封装信息返回了

在这里插入图片描述

3.2 权限不足

把hello接口的权限改了,数据库用户没有这个权限

在这里插入图片描述
没有问题,返回的是我们想要的格式

在这里插入图片描述

一键三连有没有捏~~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值