Spring Security中successHandler无效问题及解决

 更新时间:2024年08月01日 15:31:02   作者:一支万宝路  
这篇文章主要介绍了Spring Security中successHandler无效问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Spring Security中successHandler无效

原先代码

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .anyRequest().authenticated()
                // 自定义登录页面
                .and()
                .formLogin()
                .loginPage("/login.html")
                .successHandler((req, resp, auth) -> {
                    Object principal = auth.getPrincipal();
                    resp.setContentType("application/json;charset=utf-8");
                    PrintWriter out = resp.getWriter();
                    out.write(new ObjectMapper().writeValueAsString(principal));
                    out.flush();
                    out.close();
                })
                .permitAll()
                // 关闭 csrf
                .and()
                .csrf().disable();
    }

以上代码运行之后

无论怎么测试,successHandler都无效,只会返回原来的登录页面,

但是,加入自定义登录接口url之后,successHandler又生效:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .anyRequest().authenticated()
                // 自定义登录页面
                .and()
                .formLogin()
                .loginPage("/login.html")
                // 自定义登录接口
                .loginProcessingUrl("/doLogin")
                .successHandler((req, resp, auth) -> {
                    Object principal = auth.getPrincipal();
                    resp.setContentType("application/json;charset=utf-8");
                    PrintWriter out = resp.getWriter();
                    out.write(new ObjectMapper().writeValueAsString(principal));
                    out.flush();
                    out.close();
                })
                .permitAll()
                // 关闭 csrf
                .and()
                .csrf().disable();
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot配置https实操方法

    SpringBoot配置https实操方法

    在本篇文章里小编给大家整理的是关于SpringBoot配置https实操方法以及相关知识点,需要的朋友们参考下。
    2019-11-11
  • java 学习笔记(入门篇)_java的安装与配置

    java 学习笔记(入门篇)_java的安装与配置

    学习Java已经很长时间了,由于基础不好遇到问题就无从下手,所以,打算写Java的随手笔记来巩固基础,加强学习,接下来讲解java的安装,配置等,感兴趣的朋友可以参考下
    2013-01-01
  • Jenkins build记录清理,释放磁盘空间方式

    Jenkins build记录清理,释放磁盘空间方式

    Jenkins构建记录会占用大量磁盘空间,需要定期清理,可以通过JenkinsJob配置中的“丢弃旧的构建”(DiscardOldBuilds)来清理
    2025-11-11
  • Java本地缓存Caffeine的简单使用

    Java本地缓存Caffeine的简单使用

    这篇文章主要介绍了Java本地缓存Caffeine的简单使用,Caffeine 是基于 JAVA 8 的高性能本地缓存库,并且在 spring5后,spring 官方放弃了 Guava,而使用了性能更优秀的 Caffeine 作为默认缓存组件,需要的朋友可以参考下
    2023-12-12
  • 解决java启动时报线程占用报错:Exception in thread “Thread-14“ java.net.BindException: Address already in use: bind

    解决java启动时报线程占用报错:Exception in thread “Thread-14“ java.ne

    这篇文章主要给大家介绍了关于解决java启动时报线程占用:Exception in thread “Thread-14“ java.net.BindException: Address already in use: bind的相关资料,文中将解决的办法介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Spring中校验器(Validator)的深入讲解

    Spring中校验器(Validator)的深入讲解

    Spring校验器,参数校验从此简单。下面这篇文章主要给大家介绍了关于Spring中校验器(Validator)的相关资料,文中通过示例代码介绍非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-06-06
  • javaweb项目如何实现手机短信登录

    javaweb项目如何实现手机短信登录

    这篇文章主要介绍了javaweb项目如何实现手机短信登录,手机号登录在现在的项目中用的场景非常多,实现起来也不难,今天我们就一起来通过演示实现登录过程,需要的朋友可以参考下
    2019-07-07
  • SSH框架网上商城项目第9战之添加和更新商品类别功能实现

    SSH框架网上商城项目第9战之添加和更新商品类别功能实现

    这篇文章主要为大家详细介绍了SSH框架网上商城项目第9战之添加和更新商品类别功能实现,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • springboot /tmp 临时目录的具体实现

    springboot /tmp 临时目录的具体实现

    springboot应用服务再启动的时候,会在操作系统的/tmp目录,本文主要介绍了springboot /tmp 临时目录的具体实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • 完美解决java double数相加和相减的方案

    完美解决java double数相加和相减的方案

    这篇文章主要介绍了完美解决java double数相加和相减的方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01

最新评论