千家信息网

自定义SpringSecurity的身份验证失败怎么办

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家分享的是有关自定义SpringSecurity的身份验证失败怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.概述在本快速教程中,我们将演示如何在Spr
千家信息网最后更新 2026年11月02日自定义SpringSecurity的身份验证失败怎么办

这篇文章给大家分享的是有关自定义SpringSecurity的身份验证失败怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1.概述

在本快速教程中,我们将演示如何在Spring Boot应用程序中自定义Spring Security的身份验证失败处理。目标是使用表单登录方法对用户进行身份验证。

2.认证和授权(Authentication and Authorization)

身份验证和授权通常结合使用,因为它们在授予系统访问权限时起着重要且同样重要的作用。

但是,它们具有不同的含义,并在验证请求时应用不同的约束:

身份验证 - 在授权之前;它是关于验证收到的凭证;我们验证用户名和密码是否与我们的应用程序识别的用户名和密码相匹配授权 - 用于验证成功通过身份验证的用户是否有权访问应用程序的某个功能

我们可以自定义身份验证和授权失败处理,但是,在此应用程序中,我们将专注于身份验证失败。

3. Spring Security的AuthenticationFailureHandler

Spring Security提供了一个默认处理身份验证失败的组件。

但是,我们发现于默认行为不足以满足实际要求的情况是很常见的。

如果是这种情况,我们可以创建自己的组件并通过实现AuthenticationFailureHandler接口提供我们想要的自定义行为:

public class CustomAuthenticationFailureHandler implements AuthenticationFailureHandler { private ObjectMapper objectMapper = new ObjectMapper(); @Override public void onAuthenticationFailure( HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { response.setStatus(HttpStatus.UNAUTHORIZED.value()); Map data = new HashMap<>(); data.put( "timestamp", Calendar.getInstance().getTime()); data.put( "exception", exception.getMessage()); response.getOutputStream() .println(objectMapper.writeValueAsString(data)); }}

默认情况下,Spring使用包含错误信息的请求参数将用户重定向回登录页面。

在此应用程序中,我们将返回401响应,其中包含有关错误的信息以及错误发生的时间戳。

DelegatingAuthenticationFailureHandler将AuthenticationException子类委托给不同的AuthenticationFailureHandler,这意味着我们可以为AuthenticationException的不同实例创建不同的行为 ExceptionMappingAuthenticationFailureHandler根据AuthenticationException的完整类名将用户重定向到特定的URL 无论AuthenticationException的类型如何,ForwardAuthenticationFailureHandler都会将用户转发到指定的URL SimpleUrlAuthenticationFailureHandler是默认使用的组件,如果指定,它会将用户重定向到failureUrl;否则,它只会返回401响应

现在我们已经创建了自定义AuthenticationFailureHandler,让我们配置我们的应用程序并覆盖Spring的默认处理程序:

@Configuration@EnableWebSecuritypublic class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth .inMemoryAuthentication() .withUser("baeldung") .password("baeldung") .roles("USER"); } @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest() .authenticated() .and() .formLogin() .failureHandler(customAuthenticationFailureHandler()); } @Bean public AuthenticationFailureHandler customAuthenticationFailureHandler() { return new CustomAuthenticationFailureHandler(); }}

注意failureHandler()调用,我们可以告诉Spring使用我们的自定义组件而不是使用默认组件。

感谢各位的阅读!关于"自定义SpringSecurity的身份验证失败怎么办"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

验证 身份 用户 程序 应用 应用程序 不同 组件 处理 情况 错误 怎么办 重要 信息 内容 密码 更多 用户名 篇文章 行为 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 喔噻互联网科技有限公司 南京欣网互联网络科技有限公司 互联网科技活动banner 科技金融是不是互联网金融 宜安科技 互联网金融 智慧科技互联网 互联网 视角下的科技创新 汉立互联网科技有限公司联系电话 博兴的互联网电子科技公司 隆华科技工业互联网 北京大学互联网科技怎么样 北京华百购互联网科技有限公司 顶级互联网科技成果有哪些 移动互联网年度科技创新 互联网科技和信息 科技类公司包括互联网吗 广州新华互联网科技学校电竞方面 电子商务与互联网科技的关系 互联网硬科技公司 广州全民伙伴互联网科技有限公司 互联网科技企业 互联网与科技金融数据 互联网科技上市公司 兼蜜互联网科技 苏州大垚互联网科技 南平创想时代互联网科技有限公司 爱医互联网络科技 世界互联网科技成果奖 长沙易易互联网科技有限公司 杭州科技互联网公司有哪些
0