springboot security之前后端分离配置方式

 更新时间:2025年03月31日 14:59:01   作者:不识君的荒漠  
这篇文章主要介绍了springboot security之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

前言

spring boot security默认配置有一个登录页面,当采用前后端分离的场景下

需要解决两个问题:

  1. 前端有自己的登录页面,不需要使用spring boot security默认的登录页面
  2. 登录相关接口允许匿名访问

因此需要自定义相关实现。

自定义配置

自定义配置的核心实现如下:

@Component
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 在这里自定义配置
    }
}

如上示例代码:

关键是重写这个方法,spring boot security的扩展方法不只这一种,化繁为简,尽量采用最简单直白的方式。

认证失败自定义处理

当请求认证失败的时候,可以返回一个401的状态码,这样前端页面可以根据响应做相关处理,而不是出现默认的登录页面或者登录表单:

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 在这里自定义配置
        http.authorizeRequests()
                .anyRequest()
                .authenticated()
                .and()
                .exceptionHandling()
                // 认证失败返回401状态码,前端页面可以根据401状态码跳转到登录页面
                .authenticationEntryPoint((request, response, authException) ->
                        response.sendError(HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase()))
                .and().cors()
                // csrf是否决定禁用,请自行考量
                .and().csrf().disable()
//                .antMatcher("/**")
                // 采用http 的基本认证.
                .httpBasic();
    }

登录相关接口匿名访问

登录接口或者验证码需要匿名访问,不应该被拦截。

如下,提供获取验证码和登录的接口示例:

@RequestMapping("/login")
@RestController
public class LoginController {

    @PostMapping()
    public Object login() {
        return "login success";
    }

    @GetMapping("/captcha")
    public Object captcha() {
        return "1234";
    }
}

配置允许访问这部分接口:

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 在这里自定义配置
        http.authorizeRequests()
                // 登录相关接口都允许访问
                .antMatchers("/login/**").permitAll()
                // 还有其它接口就这样继续写
                .antMatchers("/other/**").permitAll()
                .anyRequest()
                .authenticated()
				... 省略下面的
    }

前置文章

spring boot security快速使用示例

总结

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

相关文章

  • Java如何将字符串String转换为整型Int

    Java如何将字符串String转换为整型Int

    这篇文章主要介绍了Java如何将字符串String转换为整型Int,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • 解决@Around对静态方法不生效的问题

    解决@Around对静态方法不生效的问题

    这篇文章主要介绍了解决@Around对静态方法不生效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java C++题解leetcode 1684统计一致字符串的数目示例

    Java C++题解leetcode 1684统计一致字符串的数目示例

    这篇文章主要为大家介绍了Java C++题解leetcode 1684统计一致字符串的数目示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Springboot基于enable模块驱动的实现

    Springboot基于enable模块驱动的实现

    这篇文章主要介绍了Springboot基于enable模块驱动的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • SpringCloud3.x集成BigQuery的代码实现

    SpringCloud3.x集成BigQuery的代码实现

    Google BigQuery 是一种高性能、可应用于大数据分析的公主云数据库服务,Spring Cloud 提供了完善的工具和核心功能,可以进行泛动分布应用构建,本文给大家介绍了SpringCloud3.x集成BigQuery的代码实现,需要的朋友可以参考下
    2025-01-01
  • 浅谈Java中BIO、NIO和AIO的区别和应用场景

    浅谈Java中BIO、NIO和AIO的区别和应用场景

    这篇文章主要介绍了Java中BIO、NIO和AIO的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 详解Java实现数据结构之并查集

    详解Java实现数据结构之并查集

    并查集这种数据结构,可能出现的频率不是那么高,但是还会经常性的见到,其理解学习起来非常容易,通过本文,一定能够轻轻松松搞定并查集
    2021-06-06
  • Java实现雪花算法的工具类介绍

    Java实现雪花算法的工具类介绍

    雪花 (SnowFlake )算法是一种分布式唯一ID生成算法,可以生成全局唯一的ID标识符,就像自然界中雪花一般没有相同的雪花,本文和大家分享了一个雪花算法工具类,需要的可以收藏一下
    2023-05-05
  • JAVA匿名内部类(Anonymous Classes)的具体使用

    JAVA匿名内部类(Anonymous Classes)的具体使用

    本文主要介绍了JAVA匿名内部类,匿名内部类在我们JAVA程序员的日常工作中经常要用到,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • mybatis 返回Integer,Double,String等类型的数据操作

    mybatis 返回Integer,Double,String等类型的数据操作

    这篇文章主要介绍了mybatis 返回Integer,Double,String等类型的数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论