3.Spring Security 登录成功和失败处理

Spring Security 有什么用?附使用教程 类在 Spring Boot 应用程序中是配置和管理安全性的核心部分。它定义了应用程序的安全策略,确保未认证的用户无法访问受保护的资源,同时允许你灵活地配置身份验证和授权的方式。配置一旦生效,它会在应用程序的生命周期中持续为请求提供安全保护。 阅读详情
  1. 失败处理流程 继承AuthenticationFailureHandler 接口
@Component("MyAuthenticationFailureHandler")
public class MyAuthenticationFailureHandler implements AuthenticationFailureHandler {
    protected Logger logger= LoggerFactory.getLogger(getClass());
    @Autowired
    ObjectMapper objectMapper;
    @Override
    public void onAuthenticationFailure(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException, ServletException {

        logger.info("登录失败:");
        //这里可以自定义失败处理的数据格式
        httpServletResponse.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
        httpServletResponse.setContentType("application/json;charset=utf-8");
        httpServletResponse.getWriter().write(objectMapper.writeValueAsString(e));
    }
}

  1. 成功处理流程继承 AuthenticationSuccessHandler
@Component("MyAuthenticationSuccessHandler")
public class MyAuthenticationSuccessHandler implements AuthenticationSuccessHandler {

    protected Logger logger= LoggerFactory.getLogger(getClass());

    @Autowired
    ObjectMapper objectMapper;
    @Override
    public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException {

        logger.info("登录成功:");
		//这里可以自己定义返回的数据结构 我在这里返回的是 authentication 的内容,authentication 里面包含
		//用户信息,ip信息、等
        httpServletResponse.setContentType("application/json;charset=utf-8");
        httpServletResponse.getWriter().write(objectMapper.writeValueAsString(authentication));
    }
}

3.修改配置项 WebSecurityConfigurerAdapter

@Configuration
public class MySecurityConfigurer extends WebSecurityConfigurerAdapter {

	//引入成功配置注解
    @Autowired
    AuthenticationSuccessHandler MyAuthenticationSuccessHandler;
	//引入失败配置注解
    @Autowired
    AuthenticationFailureHandler MyAuthenticationFailureHandler;

    @Bean
    PasswordEncoder passwordEncoder()
    {
        // return NoOpPasswordEncoder.getInstance();
        return  new BCryptPasswordEncoder();
    }
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //formlogin登录
        http.formLogin()
                //自定义的登录页面
                .loginPage("/login.html")
                //让form表单的用户名和密码走 系统认证
                .loginProcessingUrl("/login/form")
                .successHandler(MyAuthenticationSuccessHandler)
                .failureHandler(MyAuthenticationFailureHandler)
                .and()
                //任何请求都进行拦截
                .authorizeRequests()
                //不需要身份认证的项目。匹配器
                .antMatchers("/login.html").permitAll()
                //所有的请求
                .anyRequest()
                //都要身份认证
                .authenticated()
                 .and()
                //跨站请求关掉
                .csrf().disable();
    }
}

4.登录失败演示
在这里插入图片描述
5.登录成功演示
在这里插入图片描述

spring security 配置类——SecurityConfigration /权限注解,访问服务需要的权限@PrePostEnabled("hasAuthority('admin')")//创建BCryptPasswordEncoder注入容器@Bean}//// @Bean//// throw new RuntimeException("手机号或者密码错误");//// }//// //查用户权限//// //把数据封装成UserDetails返回// };// } 阅读详情

相关推荐

SecurityConfiguration安全认证与授权

这意味着在配置中关闭CSRF保护后,应用程序将不会验证请求是否包含有效的CSRF令牌。禁用CSRF保护可能会有一定的风险,因此在禁用之前应该仔细评估应用程序的安全需求。CSRF是一种常见的Web攻击,攻击者通过利用用户在访问恶意网站时的身份验证信息,发送伪造的请求来执行非法操作。需要注意的是,在禁用CSRF保护时,我们需要确保应用程序有其他有效的安全措施来防止CSRF攻击。这段代码是在使用Spring Security配置CSRF(跨站请求伪造)保护时的一个配置方法。方法用于禁用CSRF保护。

weixin_49302930的博客 772

Spring Security --SecurityConfig的详细配置

一、SecurityConfig 在之前的文章中,我们从底层源码的层面了解到,要接管Spring Security的配置,就必须继承WebSecurityConfigurerAdapter,并加上@EnableWebSecurity注解。 一个比较完整的SecurityConfig配置如下: @Configuration //开启判断用户对某个控制层的方法是否具有访问权限的功能 @EnableGlobalMethodSecurity(prePostEnabled = true) @EnableWebSecu

cristianoxm的博客 1万+

spring-security【2022-3-18更新】

话不多说导包本质上主要是使用了AOP 和 拦截器! 导包 <!-- spring security 包含下面两个注释掉的包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <!-- &l

m0_53964515的博客 5068

SecurityConfig配置

【代码】SecurityConfig配置。

ZYH_CKA的博客 1632

Spring Security自定义登录验证及登录返回结果

Spring Security自定义登录验证及登录返回结果一.功能描述二.处理逻辑简单流程自定义UserDetails自定义UserDetailsDAO自定义UserDetailsService自定义用户登录验证逻辑AuthenticationProvider三.Spring Security基本配置信息四.登录登出自定义处理器登录成功处理器LocalAuthenticationSuccessHandler登录失败处理器LocalAuthenticationFailureHandler登出成功处理器Loca

娃儿回家 6131

Spring Security--自定义成功&失败处理器

一 自定义登录成功处理器       1 源码分析       使用 successForwardUrl()时表示成功后转发请求到地址。内部是 通过 successHandler()方法进行控制成功后交给哪个类进行处理.    &nbsp...

我和井盖都笑了博客 753

spring security3(一)登录验证

正应了某人的话,java就这副德行,用了框架以后,代码是减少了,却多出一大堆比代码还复杂的配置。由于spring security3的配置繁多,所以用起来也不是太容易上手,整整研究了5,6天,才勉强把登录的验证做好。大概配置如下: 1.配置web.xml,这一步相对简单,只需要把应该加入的包加上,并且在xml文件中配上过滤器即可:    filter>     filter-name>s

wanglin811的专栏 1508

spring security 3.1注册后自动登录

网上搜索一大圈,最后发现http://www.ke-cai.net/2010/11/auto-login-after-successful.html里讲述的是最接近答案的,但一测试,发现验证是通过了,session却没有保存,接着再搜,发现了一篇文章说到了这个问题,http://stackoverflow.com/questions/5428654/spring-security-auto-log

softwarehe的专栏 7526

spring security实现传参

本人现在开发的项目中用到了spring security,但只能传递两个

brushli的专栏 5499

【从零开始学Skynet】基础篇(一):Skynet环境搭建

Skynet运行于Linux操作系统,我们可以在自己的电脑上搭建虚拟机系统,也可以购买阿里云、腾讯云服务器,笔者这个系列的所有代码都是在Ubuntu16.04版本的虚拟机系统下运行编辑。

我是一条寻水的鱼 3167

计算机毕业设计springboot基于微信平台的二次元手办商场小程序【附源码】

选题背景: 随着二次元文化的兴起和普及,越来越多的人开始对二次元角色产生了浓厚的兴趣和喜爱。手办作为二次元文化的重要载体之一,成为了许多二次元爱好者收藏和展示的对象。然而,在传统的线下手办商场中,消费者往往面临着时间、空间和选择的限制。因此,基于微信平台的二次元手办商场小程序应运而生。 选题意义: 首先,基于微信平台的二次元手办商场小程序能够打破地域限制,使得用户可以随时随地通过手机进行购物。无论是在家中、上班途中还是旅行中,用户都能够方便地浏览和购买自己喜欢的手办,极大地提高了购物的便利性和灵活性。

拉期程序 452

Spring Security之配置从DB获取用户信息进行验证(xml配置文件方式)

此处使用spring Security3.1,springMVC+SpringSecurity。 配置文件:spring-security.xml &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:security="http://www.springframework.org/schema/securi...

txd2016_5_11的博客 611

C++坦克大战源代码

【代码】C++坦克大战源代码。

强国豪,林中霖 2609

Spring Security 认证源码 UsernamePasswordAuthenticationFilter

Java 异常处理进阶 自定义异常链设计与错误码规范落地-摘要

2401_85077271的博客 412

大语言模型(LLM)在组合优化中的新突破:LLM-LNS与FunSearch性能对比

本文深入探讨了大语言模型(LLM)在组合优化中的创新应用,重点对比了LLM-LNS与FunSearch两种方法的性能差异。研究表明,LLM-LNS在物流路径规划、资源调度等场景中展现出显著优势,其双层自演化架构能有效平衡探索与利用,相比传统方法提升效率约43%。文章还提供了实践选择指南,帮助开发者根据具体需求选用合适的技术方案。

weixin_42526415的博客 406

手把手教你学simulink(16.2)--基于Simulink的高通滤波器(High-Pass Filter)项目

基于Simulink的高通滤波器(High-Pass Filter)项目的详细实例介绍。这个项目将重点放在高通滤波器的设计、实现和仿真上,帮助你理解和应用高通滤波器在信号处理中的作用。

MHD0815的博客 926

springmvc+hibernate+security整合笔记

之前我们整理了关于springMVC的相关文章,包括springMVC入门案例,源代码分析,实战演练以及与hibernate,c3p0等,现在我们要在这个基础上整合spring security3 的相关功能,同样,我们以实例的方式来展示相关配置内容和代码开发,并不追求细节,因为说实话,细节上的东西我也没研究,只是做出一个DEMO来,之后我会发表相关的文章。 1、添加jar包 ja

我的程序员之路 1566

在 Fiori Elements Object Page 的表格中用 UI.Hidden 隐藏列:语义、边界与落地实践全解析

摘要: Fiori Elements的Object Page表格中,UI.Hidden注解支持静态和动态隐藏列。动态隐藏分为两种:基于父实体属性隐藏整列,或基于子实体属性按行隐藏单元格。关键约束包括:支持服务端操作的列禁止使用动态隐藏,否则会导致UX不一致。ABAP CDS不支持路径式UI.Hidden,需改用XML注解。该功能需与UI.Importance、个性化等机制明确区分,避免混淆。对于可能参与排序/过滤的列,建议仅使用静态隐藏。实际应用中需注意注解位置(整列或单元格级)和业务场景的匹配。

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

Spring Security 5.3.0.RC1 Released

Releases Eleftheria Stein-Kousathana 二月 5, 2020 On behalf of the community, I’m pleased to announce the release of Spring Security 5.3.0.RC1! You can find the complete details in the release notes and...

[Blog][Domain] programb.blog.youkuaiyun.com 474

uniapp - 实现 App 端 “半屏幕“ 连续扫码功能,页面只有半个屏幕是扫码框并且可持续连续扫码获取数据(不使用官方 uni.scanCode API,因为无法连续扫码!)详细示例源码插件教程

uniapp app端实现半屏幕扫码,uniapp 扫一扫半个屏幕,uniapp 扫一扫,uniapp持续扫码实现,uniapp怎么自定义扫码和连续扫码,uni-app App端半屏连续扫码,uniapp 扫一扫半个屏幕,uniapp自定义扫码页面样式,实现连续扫码功能(uniapp),uniapp - 实现 App 端 "半屏幕" 连续扫码功能,页面只有半个屏幕是扫码框并且可持续连续扫码获取数据(不使用官方 uni.scanCode API,因为无法连续扫码!)详细示例源码插件教程。

✅ 精选推荐文章 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Spring Security实现短信登录

文章目录一、理论说明1.1 用户名密码登录逻辑1.2 短信验证码登录逻辑二、代码实战2.1 SmsAuthenticationToken2.2 SmsAuthenticationFilter2.3 SmsAuthenticationProviderhardcode的方式来模拟手机号查询用户信息2.4 成功与失败处理逻辑2.5 SmsCodeAuthenticationSecurityConfig将...

weixin_38927257的博客 3235

lwip-2.0.3

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

Spring Security OAuth2.0 认证协议【9】自定义登录页面、登录成功/失败处理

上一章:自定义用户认证逻辑(连数据库、校验逻辑、密码加密) 前面的代码下载:https://github.com/LawssssCat/v-security/tree/v2.1 个性化用户认证流程: 自定义登录页面 自定义登录成功处理 自定义登录失败处理 ...

LawssssCat的博客 2961

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Spring Security(六):自定义登录成功与失败处理

基本思路:实现AuthenticationSuccessHandler或AuthenticationFailureHandler接口,并进行相应的配置就可以了。当然框架有默认的实现类,也可以继承实现类再来自定义自己的业务。 操作流程 1、【zjj-security-demo 工程】修改application.yml 屏蔽属性loginPage,为后面一会测试使用,新增属性loginTyp...

zhujunjun6的专栏 1317

spring-security入门4---自定义登录成功和登录失败的行为

项目源码地址https://github.com/nieandsun/security

nrsc 1828

Spring Security之登录跳转

SpringSecurity是如何跳转到登录前的请求的?这个可就涉及到异常处理过滤器和认证过滤器的协同了。感兴趣的,进来看看哦

Evan_L的博客 1670
上一篇: 2.Spring Security 自定义表单认证
下一篇: SpringSecurity基本原理
精诚所至金石为开
博客等级 码龄8年 12粉丝 29原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值