Spring Boot security 默认拦截静态资源的解决方法

Spring Boot security 会默认登陆之前拦截全部css, js,img等动态资源,导致我们的公开主页在登陆之前很丑陋

像这样:

网上很多解决办法都过时了比如还在使用WebSecurityConfigurerAdapte,antMatchers

public class SecurityConfigurer extends WebSecurityConfigurerAdapter {
    @Override
    public void configure(WebSecurity web) throws Exception {
    web
        .ignoring()
        .antMatchers("/resources/**");
}
}

WebSecurityConfigurerAdapter和antMatchers已经被Spring Security 6.0弃用,现最新的是使用securityFilterChain class 如下图:

public class WebSecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests((requests) -> requests
                .requestMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
            )
            .formLogin((form) -> form
                .loginPage("/login")
                .permitAll()
            )
            .logout((logout) -> logout.permitAll());

        return http.build();
    }
}

这里只需要添加.requestMatchers("/resources/**").permitAll()就可以允许访问resources文件下资源

注意.antMatchers 已经弃用,用.requestMatchers代替

 public class WebSecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests((requests) -> requests
                .requestMatchers("/", "/home").permitAll()
                 //放行静态资源
                .requestMatchers("/resources/**").permitAll()
                .anyRequest().authenticated()
            )
            .formLogin((form) -> form
                .loginPage("/login")
                .permitAll()
            )
            .logout((logout) -> logout.permitAll());

        return http.build();
    }
}

但是我看网上没有人解释需要注意这里“/resources/**"并不一定万能,具体链接得根据你插入css/js的路径来比如这里使用assets/**

那么你securityFilterChain class里就得是.requestMatchers("/assets/**").permitAll()

之后再运行,成功!

到此这篇关于Spring Boot security 默认拦截静态资源的文章就介绍到这了,更多相关Spring Boot security拦截静态资源内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot如何整合Springsecurity实现数据库登录及权限控制

    目录 第一步 第二步是封装一个自定义的类 第三步, 我们需要判断密码啦 总结 我们今天使用SpringBoot来整合SpringSecurity,来吧,不多BB 首先呢,是一个SpringBoot 项目,连接数据库,这里我使用的是mybaties.mysql, 下面是数据库的表 DROP TABLE IF EXISTS `xy_role`; CREATE TABLE `xy_role` ( `xyr_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键i

  • SpringBoot Security的自定义异常处理

    目录 SpringBoot Security自定义异常 access_denied 方面异常 Invalid access token 方面异常 Bad credentials 方面异常(登陆出错) 其他类 补充 SpringSecurity自定义响应异常信息 SpringBoot Security自定义异常 access_denied 方面异常 原异常 { "error": "access_denied", "error_description"

  • SpringBoot+SpringSecurity 不拦截静态资源的实现

    一.问题描述 在 SpringBoot 中加入 SpringSecurity 中之后,静态资源总是被过滤,导致界面很难看: 目录结构: 二.问题解决 正常不拦截资源,我查阅资料,基本都是重新 config 方法即可: package org.yolo.securitylogin.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conf

  • SpringBoot整合Security实现权限控制框架(案例详解)

    目录 一.前言 二.环境准备 2.1.数据库表 四.测试 五.总结 我想每个写项目的人,都肯定会遇到控制权限这个问题. 例如这个这个链接只能管理员访问,那个链接丫只能超级管理员访问等等,实现方式也有多种多样,控制的粒度也不一样. 以前刚学的时候,不会框架,大都是手写注解+过滤器来进行权限的控制,但这样增加了过滤器的负担.用起来也会稍微有些麻烦,粒度不太好控制. 用框架的话,就是封装了更多的操作,让一切更简单吧.当然不局限于Security,还有像Shiro安全框架,这两种非常常见. 一起加油吧!

  • Spring boot security权限管理集成cas单点登录功能的实现

    目录 1.Springboot集成Springsecurity 2.部署CASserver 3.配置CASclient 挣扎了两周,Spring security的cas终于搞出来了,废话不多说,开篇! 1.Spring boot集成Spring security 本篇是使用spring security集成cas,因此,先得集成spring security新建一个Spring boot项目,加入maven依赖,我这里是用的架构是Spring boot2.0.4+Spring mvc+Spri

  • Spring Boot security 默认拦截静态资源的解决方法

    Spring Boot security 会默认登陆之前拦截全部css, js,img等动态资源,导致我们的公开主页在登陆之前很丑陋 像这样: 网上很多解决办法都过时了比如还在使用WebSecurityConfigurerAdapte,antMatchers public class SecurityConfigurer extends WebSecurityConfigurerAdapter { @Override public void configure(WebSecurity web)

  • Spring Boot 多个定时器冲突问题的解决方法

    目录 战术分析 使用场景 问题场景重现 添加注解 配置类 战术分析 上次的博客疏忽了定时器的一个大重点… 实际开发项目中一定不止一个定时器,很多场景都需要用到,而多个定时器带来的问题 : 就是如何避免多个定时器的互相冲突. 推荐一个 Spring Boot 基础教程及实战示例:https://github.com/javastacks/spring-boot-best-practice 使用场景 我们的订单服务,一般会有一个待支付订单,而这个待支付订单是有时间限制的,比如阿里巴巴的订单是五天,淘

  • Spring Boot中自动化配置的利弊以及解决方法

    本文主要给大家介绍了关于Spring Boot自动化配置的利弊及解决方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: Spring Boot中的双刃剑:自动化配置 在之前的文章中,我们通过各种功能性示例体验了Spring Boot的自动化配置给我们所带来的超便利的新开发方式.但是,在一些情况下Spring Boot的自动化配置也会给我们惹来不少的麻烦,比如这些场景: 项目依赖复杂的情况下,由于依赖方的依赖组织不够严格,可能引入了一些实际我们不需要的依赖,从而导致我们

  • Spring Boot接收单个String入参的解决方法

    前言 接受参数是我们在日常开发中经常会遇到的一个需求,下面这篇文章主要给大家介绍了关于Spring Boot接收单个String入参之解决方案的相关内容,下面话不多说了,来一起看看详细的介绍吧 场景: 在做接口时,有的时候,接口入参只需要一个参数,如果将一个参数封装成一个对象很麻烦,故有了以下方式: 思路: spring自带的参数解析器貌似是不具备这个能力的,所有自定义 方式方法: 1.定义一个注解 @Target(ElementType.PARAMETER) @Retention(Retent

  • Spring Boot多个定时任务阻塞问题的解决方法

    目录 前言 1.重写SchedulingConfigurer#configureTasks() 2.通过配置开启 3.结合@Async 总结 前言 今天这篇文章介绍一下Spring Boot 中 如何开启多线程定时任务? 为什么Spring Boot 定时任务是单线程的? 想要解释为什么,一定要从源码入手,直接从@EnableScheduling这个注解入手,找到了这个ScheduledTaskRegistrar类,其中有一段代码如下: protected void scheduleTasks(

  • uwsgi+nginx代理Django无法访问静态资源的解决

    在部署uwsgi+nginx代理Django的时候,使用uwsgi访问正常,但是使用nginx代理端口访问的时候无法访问静态资源. 解决方法: 查看nginx启动用户,将静态资源赋权给改用户访问即可. 如我的静态资源目录:/data/django/static 赋权:chmod 755 /data/django/static -R uwsgi配置: # uwsig使用配置文件启动 [uwsgi] # 项目所在的根目录 chdir=/data/django/dailyfresh # 指定项目的ap

  • 解决Spring boot2.0+配置拦截器拦截静态资源的问题

    第一次遇到这个问题的时候,简直是一脸蒙逼,写了一个拦截器以后,静态资源就不能访问了,到处查找才知道是版本问题 解决办法: 第一步:定义一个类实现 实现WebMvcConfigurer的类中拦截器中添加放行资源处添加静态资源文件路径: @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(sessionInterceptor).addPathPatterns("/&

  • Spring Boot Security配置教程

    1.简介 在本文中,我们将了解Spring Boot对spring Security的支持. 简而言之,我们将专注于默认Security配置以及如何在需要时禁用或自定义它. 2.默认Security设置 为了增加Spring Boot应用程序的安全性,我们需要添加安全启动器依赖项: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-

  • 详解Spring Boot Security

    简介 Spring Security,这是一种基于 Spring AOP 和 Servlet 过滤器的安全框架.它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权. 工作流程 从网上找了一张Spring Security 的工作流程图,如下. 图中标记的MyXXX,就是我们项目中需要配置的. 快速上手 建表 表结构 建表语句 DROP TABLE IF EXISTS `user`; DROP TABLE IF EXISTS `role`; DROP TABLE IF

随机推荐