当前位置: 首页 > 知识库问答 >
问题:

Spring Boot应用程序即使在加载图像时也会为资源中的所有静态内容返回401

鲍永春
2023-03-14

我有一个Spring Boot webapp,有一些针对不同路由的安全配置。该项目的一些资源如下:

  • 资源/
  • 静态/
    • CSS/
    • IMG/
    • JS/
    • 库/

    我发现的一些已经问过的问题是:

    • Spring Boot不提供静态内容
    • Springboot 401未经授权,即使没有安全性
    • SpringBoot无法从资源文件夹加载js文件
    • Spring测试返回不安全URL的401

    我已经找到了很多spring文档

    @EnableWebMvc
    @Configuration
    @ImportResource({"classpath:mongo-config.xml"})
    public class ProjectConfiguration implements  WebMvcConfigurer {
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(
                "/img/**",
                "/css/**",
                "/js/**",
                "/libs/**")
                .addResourceLocations(
                        "classpath:/static/img/",
                        "classpath:/static/css/",
                        "classpath:/static/js/",
                        "classpath:/static/libs/");
    }
    
    @EnableWebSecurity
    @Configuration
    public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        System.out.println("Security Config");
        http    .csrf().disable()
                .httpBasic().disable()
                .authorizeRequests()
                    .antMatchers("/js/**","/css/**","/img/**","/libs/**").permitAll()
                    .antMatchers("/userManagement", "/userManagement/**", "/rest/auth").permitAll()
                    .antMatchers("/admin", "/admin/**").hasRole("ADMIN")
                    .antMatchers("/managementSettings", "/managementSettings/**").hasRole("MANAGEMENT")
                    .antMatchers("/user/**").hasRole("USER")
                    .antMatchers("/**").hasAnyRole("USER", "DEMO", "MANAGEMENT")
                    .anyRequest().authenticated()
                    .and()
                .formLogin()
                    .loginPage("/login")
                    .permitAll()
                    .successHandler( CustomSimpleURLAuthenticationSuccesHandler())
                    .failureUrl("/login?error")
                    .and()
                .logout()
                    .permitAll()
                    .logoutRequestMatcher( new AntPathRequestMatcher("/logout"))
                    .logoutSuccessUrl("/login")
                    .and()
                .addFilterAfter(AjaxRedirectFilter(), ExceptionTranslationFilter.class)
                .headers()
                    .httpPublicKeyPinning()
                    .addSha256Pins("*********************","*************************")
                    .includeSubDomains(true)
                    .maxAgeInSeconds(10000);
    }
    
    @Override
    public void configure(WebSecurity web) {
        web
                .ignoring()
                .antMatchers("/js/**","/css/**","/img/**","/libs/**");
    }
    
    <div class="content">
        <img style="margin:auto" class="img-responsive" th:src="@{/img/logo.png}"/>
    </div>
    

    那么,既然说了这么多,我如何在我的视图中加载所有的静态文件呢?我不介意有自定义或默认路径,只要我能够访问我的文件

共有1个答案

凌和颂
2023-03-14

您必须将资产URL的安全性配置为permitAll,如本教程中的第五个扇区https://www.baeldung.com/spring-mvc-statig-resources。我猜。

 类似资料:
  • 我有一个Spring Boot项目,它必须启动一个角水疗中心。资源文件夹的结构如下: 在templates/src文件夹中有索引。html文件我从控制器开始: 通过这种方式,我成功地启动了索引。html,但所有的resurces都在: 鲍尔_组件 src/js src/css 未正确加载。所以我添加了配置: 但我仍然无法加载所有需要的资源,因为我得到404 我不明白我做错了什么。 这里还有索引。h

  • 4.1 原生koa2实现静态资源服务器 4.2 koa-static中间件

  • 注意: 本教程假定你已经下载和安装了CodeIgniter开发环境。 首先,你需要创建一个可以处理静态内容请求的控制器类。控制器,是一个用来代理完成某项任务的PHP类,它充当基于MVC架构应用程序的“粘合剂”(译者注:控制器用来粘合/协调不同模型和视图。随着教程的深入,你会更深刻的理解这一点)。 举例来说,假设存在某个针对如下URL的请求: http://example.com/news/late

  • Note: 这篇教程假设你已经下载好 CodeIgniter ,并将其 安装 到你的开发环境。 你要做的第一件事情是新建一个 控制器 来处理静态页面,控制器就是一个简单的类, 用来完成你的工作,它是你整个 Web 应用程序的 “粘合剂” 。 例如,当访问下面这个 URL 时: http://example.com/news/latest/10 通过这个 URL 我们就可以推测出来,有一个叫做 "n

  • 我试图使用thymeleaf生成pdf,但问题是在生成pdf时,没有加载css和js等静态资源。如果我将html呈现为网页,则资源会完全加载,但每当我生成pdf时,都不会应用资源。有人知道有没有办法解决这个问题吗? 提前谢谢。

  • 我有一个问题与我的Lazysize插件的动态集成。事实是当我加载页面(缓存禁用)时,src的所有图像都加载了内容。在这之后,响应者图像像我想要的那样被懒惰加载。 我的思考: 我用一个小图像替换了src属性,但浏览器在用这个小图像更改src之前一直加载原始图像。 加载页面时,不会在视口中显示所有图像,因为我对每个图像都使用了填充比技巧。 我试图在页面的页眉中移动脚本,但没有任何更改 下面是我在页面底