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

在启用了安全性的Spring5中加载静态资源时出现问题

仲浩旷
2023-03-14

我在加载静态资源方面遇到了问题,比如图像、css样式等...在Spring5中,当我添加安全性时,没有安全性它加载ok

Spring腹板

沉香树

Spring Security

因此我创建了一个名为/assets/imgs的文件夹

在src/main/resources/static/中

我在文件夹中添加了一个假图像,名为fake-image.png

@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http
        .authorizeRequests().antMatchers("/resources/**", "/static/**","/src/main/resources/**").permitAll().and()
        .formLogin().loginPage("/login").permitAll()
        .usernameParameter("username").passwordParameter("password")
        .defaultSuccessUrl("/loginsuccess").permitAll().and()
        .logout().permitAll();
    }

    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder builder) throws Exception {

        PasswordEncoder encoder = passwordEncoder();
        UserBuilder users = User.builder().passwordEncoder(encoder::encode);

        //User to login
        builder.inMemoryAuthentication()
                .withUser(users.username("admin").password("q").roles("ADMIN"));

    }

}
@EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/login").setViewName("login");
        registry.addViewController("/").setViewName("login");
    }

}
<!DOCTYPE html>
<html lang="es" xmlns="http://www.w3.org/1999/xhtml"
    xmlns:th="http://www.thymeleaf.org">
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

<meta name="viewport"
    content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="" />
<meta name="author" content="" />

<meta name="ctx" th:content="@{/}" />

<title>Test Static Files</title>

</head>
<body>
    <div class="container">
        <div class="row no-gutters mt-3">
            <div class="col columna-banner">
                <img class="img-fluid rounded login-banner-image"
                    th:src="@{/assets/imgs/fake-image.png}" />
            </div>
        </div>
    </div>
</body>
</html>

在eclipse console中,我会收到以下警告消息:

警告1434---[nio-8080-exec-2]o.s.web.servlet.pageNotFound:GET/assets/imgs/fake-image.png没有映射

更新1:

有什么建议吗?

谢谢

共有1个答案

慕嘉运
2023-03-14

好像你忘了加上这样的东西

    @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**")
        .addResourceLocations("classpath:/static/")
        .setCachePeriod(31556926);
}

到WebConfig类中

 类似资料:
  • 我将SpringMVC与Thymleaf和spring安全一起使用。我想加载一个页面使用Thymleaf模板,我可以加载我的静态资源。 例如,我想从template.html加载位于:static/img/theme/logo.png中的图片 我得到的是:结果 template.html: mvcConfig.java WebSecurityConfig: 源代码树

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

  • 我的问题很简单。我无法在Spring中加载静态资源,下面是我的配置文件。 dispatcher servlet。xml 网状物xml 我已将js和css文件放入/webapp/resources/css和/webapp/resources/js中。 我知道这个问题已经被解决了很多次,但我无法加载静态资源。我得到405浏览器上没有方法错误。 在网上尝试了所有其他解决方案。请告诉我哪里出了问题。对这些

  • 问题内容: 我得到了一个Spring MVC应用程序,该应用程序当前在目录中放置了一堆CSS和JS文件。 我通读了Spring Docs和一些有关如何使用ResourceHandlerRegistry类为模板加载这些文件的教程。我特别认为本教程中的代码段完全适合我的项目结构。 但是我的资源文件上总是显示404。 这是我当前正在使用的Application / Configuration类: 这是我

  • 前言 一个http请求访问web服务静态资源,一般响应结果有三种情况 访问文本,例如js,css,png,jpg,gif 访问静态目录 找不到资源,抛出404错误 原生koa2 静态资源服务器例子 demo源码 https://github.com/ChenShenhai/koa2-note/blob/master/demo/static-server/ 代码目录 ├── static # 静态资

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