srping security3.0(一)----登陆不能抛出自己定义的异常,用户不存在异常,用户尝试登陆次数过多,回到登陆之前访问的页面

如何解决security中异常UsernameNotFoundException总是抛出密码错误问题 使用spring security进行授权登录的时候,发现登录接口无法正常捕捉UsernameNotFoundException异常,捕捉到的一直是BadCredentialsException异常。我们的预期是: UsernameNotFoundException -> 用户名错误 BadCredentialsException -> 密码错误 贴几个比较重要的代码: 经过步进法跟踪代码,发现问题所在,位于 AbstractUserDetailsAuthenticationProvi 阅读详情

          spring security3.0默认的表单登陆并不会抛出UsernameNotFoundException异常,我尝试了多次, 自定配置了bean, 也把错误信息扔到了session属性都没有解决

public final class WebAttributes {
    public static final String AUTHENTICATION_EXCEPTION = "SPRING_SECURITY_LAST_EXCEPTION";

 

得到的老是令人讨厌的Bad credentials(当然可以通过message.property可以做国际化, spring security3提供的, 我们写个中文的属性文件就可以了。

 

之所以我想在登陆验证时抛出异常是出于两个目的:

1  提示用户不存在

2  提示用户输入密码错误最大次数不能超过3, 超过3则锁定账号,   让管理员自己去解锁。

(注意:账号可用,过期,是否锁定, 这些是spring security3自带的异常, 没必要我们再去扔出了, 上面列的2个是我自定义的异常。

 

补充一点,默认的登录表单异常处理是在类SimpleUrlAuthenticationFailureHandler里处理的。

有个不一样的地方是, spring security并不是直接抛出异常, 而是包装了放在session里,属性名就是

WebAttributes.AUTHENTICATION_EXCEPTION

 

我自定义了异常处理, 不用SimpleUrlAuthenticationFailureHandler

 session.getAttribute(TRY_MAX_COUNT);  这里记得登陆成功了之后要清掉

具体办法是:在这里清掉

public class AccessSavedRequestAwareAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {

 

对应的配置文件

 

这个是支持登陆成功之后, 进入没有登陆之前访问的地址。

 

 

下面是登陆多次失败的配置:

 

 

 

在源码里可以看到DaoAuthenticationProvide

r的父类AbstractUserDetailsAuthenticationProvider有一个属性hideUserNotFoundExceptions

在配置中即可看出 hideUserNotFoundExceptions   = true代表隐藏真实的异常, 改为false即可显示你自己的异常了。

不过要继承AuthenticationException这个异常哦。

 

 

 

 

【数据分析生命周期全揭秘】从零开始打造你的数据科学项目 | 最全指南 在当今数据驱动的世界中,数据科学正在颠覆传统行业,成为企业决策和价值创造的重要引擎。然而,如何科学、系统地开展一个数据分析项目?这是很多人关心的核心问题。本篇文章基于经典数据分析课程内容,深入解读数据分析生命周期的每个阶段,让你快速掌握从“发现问题”到“落地应用”的完整流程。如果你正在学习或准备从事数据分析领域,这篇文章一定会对你大有帮助!数据分析生命周期的六大阶段数据分析生命周期的六个阶段相辅相成,每个阶段都至关重要:发现问题:明确需求,提出假设。数据准备:清洗、转换和可视化数据。 阅读详情

相关推荐

GDSFactory环境配置实战:Python、KLayout与PDK协同指南

GDSFactory是面向光子集成电路(PIC)设计的Python参数化建模框架,其核心价值在于将版图生成从手动绘图升维为可编程、可复现、可集成CI/CD的工程实践。它依赖Python科学计算生态(如NumPy)、EDA可视化工具KLayout的深度Python绑定,以及工艺厂PDK的标准化接入,三者构成‘计算-几何-工艺’技术闭环。典型应用场景包括教学级SiEPIC PDK快速原型、工业级AIM Photonics流片准备,以及自动化DRC与光学仿真流水线构建。本文聚焦GDSFactory落地中最关键也最

weixin_30983353的博客 369

springSecurity 中不能抛出异常UserNameNotFoundException 解析

通过查看源码可得知: 1. 前言 抽象类中AbstractUserDetailsAuthenticationProvider 接口抛出异常AuthenticationException 下面源码注释这么描述 * * @throws AuthenticationException if the credentials c...

weixin_34365635的博客 1869

Qt6.8.0(win64)安装教程

启动 Visual Studio 2022 Community,选择 “继续但无需代码” 运行,然后打开Option设置,Add一条版本配置,Location 选择 D:\Qt\6.8.0\msvc2022_64\bin\qmake,点击确定。我是win11系统,所以选择windows版,下载路径二选一即可。方案1:默认情况下,额外勾选图中两个组件(总共40多G)方案2:按图中自定义勾选组件(总共5.8G)选择Custom Installation。我选的方案2,总共5.81G。

D4G1TIAO的博客 9070

Spring security登录 显示用户名不存在或者密码错误

本文章只是做简单记录下曾经踩到坑,如果有什么别的想法,也可以提点宝贵的意见 1、整合spring security,我就不过多的介绍; 2、区分这两个错误之前,需要判断为什么会用户名或者密码错误时都返回相同的异常。 原因: 解决思路:将此属性配置为false. 具体的操作: 1、在security配置类中编写DaoAuthenticationProvider,将hideUserNotFoundExceptions设置成false 2、在重写的configure方法中配置DaoAuthentication

sebeefe的博客 3467

Mellanox CX7网卡搭配400G光模块实战:从选型到部署的完整指南

本文详细解析了Mellanox CX7网卡与400G光模块的选型策略与部署实践,涵盖硬件对比、兼容性验证及性能调优。重点介绍了OSFP光模块的选择要点和常见问题排查方法,帮助用户构建高性能网络基础设施,适用于AI训练、金融交易等场景。

efc1234567的博客 1291

STM32 Boot程序实战:从启动流程到安全跳转机制解析

本文深入解析STM32 Boot程序的核心作用与安全跳转机制,涵盖启动流程、内存管理、中断向量表重定向及固件验证等关键环节。通过实战案例分享如何实现可靠的固件升级与故障回退策略,避免设备变砖风险,提升嵌入式系统稳定性。

pluto的博客 780

SpringSecurity(三)自定义登录成功与失败处理

通过前面两篇文章,我们已经知道了如何使用简单的配置来保护我们的应用了,根本不需要去管SpringSecurity的登录验证流程。如果我们需要自定义登录成功与失败处理,我们需要实现AuthenticationSuccessHandler接口和AuthenticationFailureHandler接口 。 1. 新建MyAuthenticationSuccessHandler类 @Compo...

lizc_lizc的博客 1万+

三种方法教你下载大模型到本地,总有一种适合你

本文主要介绍了下载大模型到本地的三种解决方案,希望能对同学们有所帮助。 文章目录 1. 场景/问题描述 2. 方案一:使用git 3. 方案二:镜像站 4. 方案三:高速下载工具(变体及自定义代码) 4.1 aria2 4.2 自定义代码

weixin_43178406的博客 17万+

spring security oauth2中UsernameNotFoundException无法在认证失败后被捕获的问题

1.问题描述: 在认证失败后UsernameNotFoundException异常会被默认转换成BadCredentialsException异常,导致不能捕获到UsernameNotFoundException, 一般来说UsernameNotFoundException是用户名错误导致的登录失败,BadCredentialsException是用户名或者密码错误导致的登录失败。如果我们能捕获到UsernameNotFoundException就能很好的区分登录失败是哪种具体的原因,以便在某些时候做一些

咘噜biu的博客 3955

Ubuntu18.04安装VCS、Verdi、dve全套教程亲测(有成功截图)

通过下面十个步骤,我们就可以在ubuntu上使用vcs、verdi、dve等软件! 一、安装ubuntu系统,这个不在这里讲了,重点叫安装VCS、Verdi等软件 下面的过程一部分同其他网上流程一致,对其中部分进行修改。如果按照其他网上教程是不会成功的,本人亲测,下面是我试验网上不同文章的流程遇到的错误摸索后总结的流程,按照步骤保证可以成功运行,包括破解流程,使用时间不限制在2020年,可以自定义2030等等。 二、安装文件结构 –synopsys_installer #此程序用于安装下面三个程序。所以你想

QQ_778132974的博客 6364

Autosar软件组件分析及ARXML文件分析

Autosar软件组件分析及ARXML文件分析

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 3602

关于AuthenticationSuccessHandler和AuthenticationFailureHandler不执行的一种可能性

Qi_Chong的博客 713

SAP ABAP 缓冲同步揭秘——从 DDLOG 表到 RSDBBUF3 的完整实践指南

DDLOG 看似一张不起眼的系统表,却承担着 SAP 多实例环境下的数据一致性重任。通过掌握其字段意义、解析方法及周边监控工具,你可以在性能与一致性之间找到最佳平衡;通过精细化的参数管理与主动刷新策略,更能在关键业务场景中确保“数据永远是最新的”。愿本文能成为你日常排障与架构决策的参考手册。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 314

srping security3.0(一)----登陆不能抛出自己定义的异常,用户不存在异常,用户尝试登陆次数过多,回到登陆之前访问的页面...

spring security3.0默认的表单登陆并不会抛出UsernameNotFoundException异常,我尝试了多次, 自定配置了bean, 也把错误信息扔到了session属性都没有解决 public final class WebAttributes { public static final String AUTHENTICATION_EXCEPTION = "SPRING_...

yangzhiyong77 214

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Spring Boot(Web)初探四( 异常处理与使用)

后台代码向前端页面反馈结果上一篇中我们说了数据访问,我们在类中定义了约束,不能为空等操作,但是只有成功之后前台浏览器才有Person的json信息,或者删除用户等操作有一些条件,这些条件在service判断之后返回给Controller controller层在进行判断,代码很冗余,这样很不友好。 像这种情况我们就可以使用异常处理来进行1.在后台返回Object错误的时候统一处理返回 @Post

MatrixCod的专栏 323

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SpringSercurity

SpringSecurity 权限设计 库表 Spring Security 必须跟Spring集成且只能在Web环境下运行。 Shiro相对独立,有自己的Ini配置(类似于Spring中的xml配置),且不仅可以在Web环境下运行还可以在非Web环境下运行。 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用...

HappyProgrammer的博客 577

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SpringSecurity抛出异常但AccessDeniedHandler不生效

最近在学习SpringSecurity权限管理框架,在测试权限管理时发现在使用没有权限的接口时异常被全局异常处理器给捕获了 查询资料后,发现解决方法有很多,所以把我觉得比较方便的方法记录下来:全局异常中捕获AccessDeniedException再抛出就可以被AccessDeniedHandler捕获到了 @ExceptionHandler(AccessDeniedException.class) public void accessDeniedException(AccessDeniedExcep

qq_45848700的博客 1634

【security】spring security放行不生效,security放行后还是被拦截,路径变成了/error,security匿名用户无法访问

文章目录security最初的配置初步改进后的配置排查真实原因更加合理的配置 之前写了篇关于security认证的文章 感觉对security了解多了一点,直到遇到过滤器层面的问题,才明白security终究还是那个复杂的security。 security最初的配置 @Configuration public class SecuritySecureConfig extends WebSecurityConfigurerAdapter { @Override protected voi

孟秋与你的博客 2万+

security框架异常,不被自己自定义的全局异常捕获处理。

spring security中,过滤器不被自定义异常捕获的问题。

Lacia_的博客 3646

spring框架集成:全局异常处理类无法捕获springsecurity抛出异常的问题

在使用框架集成时,通常我们会使用全局异常处理类来捕获产生的异常;但在集成springsecurity时,我们遇到了这样的问题:重定义登录逻辑、重写UsernamePasswordAuthenticationFilter类时,里面抛出的的异常不会被全局异常处理类捕获。

toytoytelecar的博客 2708

编写登录成功和失败的处理器

认证失败的话,我们之前说过,登录失败的时候交给AuthenticationFailureHandler,所以我们自定义了LoginFailureHandler @Component public class LoginFailureHandler implements AuthenticationFailureHandler { @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServ

Leon_Jinhai_Sun的博客 576

Spring Security自定义登录验证(不使用userDetailsService)

一:功能说明 实现了自定义登录验证(AuthenticationProvider) 二:具体代码 1.自定义AuthenticationProvider /** * @author LEI * Created by LEI on 2019/5/30. */ @Component public class MyAuthenticationProvider implements A...

云海梦尘的博客 1万+
上一篇: spring security3.0控制多个用户账号同时登录和管理员踢出用户(原创)
下一篇: SpringMVC以post方式提交表单(spring RedirectView post提交)
西兹兹
博客等级 码龄22年 21粉丝 34原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值