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

spring安全Thymleaf静态资源不加载

宇文智敏
2023-03-14

我将SpringMVC与Thymleaf和spring安全一起使用。我想加载一个页面使用Thymleaf模板,我可以加载我的静态资源。

例如,我想从template.html加载位于:static/img/theme/logo.png中的图片

我得到的是:结果

template.html:



       body>
            div layout:fragment="content">

                a href="">img src="../static/img/theme/logo.png" alt="Logo">

                h1>Hello

            /div>

        /body>

mvcConfig.java


 @Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/home").setViewName("home");
        registry.addViewController("/index").setViewName("index");
        registry.addViewController("/template").setViewName("template");
        registry.addViewController("/layout").setViewName("layout");
        registry.addViewController("/login").setViewName("login");

    }



    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }


}

WebSecurityConfig:


    @Configuration
    @EnableWebSecurity
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {


        //List of all free pages

        private static final String[] pagesFree = {
                "/home",
                "/template",
                "/layout",

                //Thymleaf directory
                "/css/**",
                "/js/**",
                "/img/**",
                "/fonts/**",
                "/ico/**",
                "/twitter/**",
                "/"
                };



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



            http
                .authorizeRequests()
                    .antMatchers(pagesFree).permitAll()
                    .anyRequest().authenticated()
                    .and()
                .formLogin()
                    .loginPage("/login")
                    .permitAll()
                    .and()
                .logout()
                    .permitAll();
        }

        @Autowired
        public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
            auth.inMemoryAuthentication()
                    .withUser("u").password("u").roles("USER");
        }


    }

源代码树

共有1个答案

戴靖
2023-03-14

在您的安全配置中,您将声明如下所示:

/** Public URLs. */
private static final String[] PUBLIC_MATCHERS = {
        "/webjars/**",
        "/css/**",
        "/js/**",
        "/images/**",
        "/"
};

然后是这样的:

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

    List<String> activeProfiles = Arrays.asList(env.getActiveProfiles());
    if (activeProfiles.contains("dev")) {
        http.csrf().disable();
        http.headers().frameOptions().disable();
    }

    http
            .authorizeRequests()
            .antMatchers(PUBLIC_MATCHERS).permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin().loginPage("/login").defaultSuccessUrl("/payload")
            .failureUrl("/login?error").permitAll()
            .and()
            .logout().permitAll();
}

在您的Thymeleaf模板中,您可以声明如下所示:

<img class="featurette-image pull-left" th:src="@{/images/browser-icon-firefox.png}" />

您的项目的工作副本可以在这里找到。

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

  • 我试图使用相对路径在jsp文件中加载静态资源,如css文件和javascript文件,但servlet映射似乎覆盖了对它们的映射。 项目结构: web.xml: mvc调度程序servlet。xml: 我尝试加载样式表的JSP文件: 我得到的错误是: 警告组织。springframework。网状物servlet。PageNotFound:1108-在名为“mvc dispatcher”的Disp

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

  • 我是spring boot架构的新手。它说,为了让索引页面找到像js这样的静态资源,我们需要将其保留在“src/main/resources/static”下。 目录结构: Html文件:src/main/webapp/WEB-INF/jsp/ js文件:src/main/resources/static/js/ 这是我的索引页: 我的Mvc配置类如下: 我找不到原因,为什么找不到我的js文件。

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

  • 问题无法让Spring为静态资源添加资源处理程序。 背景信息我有一个Spring MVC webapp在独立的Jetty实例中运行。我的webapp结构是 我已经扩展了WebMVCConfigureAdaptor,添加了一个资源映射,这样URL就像公司一样。com/myservlet/resources/css/main。css将解析到webapp根目录/资源/css文件夹。 我的小控制器是这样的