如何将css和js添加到spring boot应用程序中?

时间:2017-08-06 21:51:56

标签: spring spring-boot thymeleaf

我尝试使用Thymeleaf在Spring Boot中将CSS添加到我的HTML页面,将CSS文件添加到静态文件夹中并以这种方式链接:

<link rel="stylesheet" th:href="@{/css/home.css}" href="../../css/home.css" />

但它不起作用。

我想停止访问URL中的CSS和js,因此我将此方法添加到我的安全配置中:

@Override
public void configure(WebSecurity web) throws Exception {
   web
      .ignoring()
      .antMatchers("/resources/static/**"); // #3
}

任何人都可以告诉我我的错误是什么或者是否需要任何配置?

1 个答案:

答案 0 :(得分:13)

.css.js是静态资源,Spring Boot默认将其映射到/resources/static文件夹

例如:

style.css

中有/resources/static/css/style.css个文件

如果你想通过thymeleaf访问它,请将其添加到你的html head部分:

<link th:href="@{/css/style.css}" rel="stylesheet" />

这里只是观察一下,如果您使用的是@EnableWebMvc注释,那么您应该按照自己的配置映射静态资源。

修改

我想停止访问URL中的CSS和js,所以我将此方法添加到我的安全配置中

所有资源都应该从浏览器访问,否则将不会加载.css.js

如果您只需要为经过身份验证的用户访问资源,则可以尝试以下配置:

  1. 转到/resources/static文件夹并创建两个子文件夹,一个用于匿名用户public的资源,另一个用于经过身份验证的用户private
  2. 将所有公共资源放入/resources/static/public文件夹。
  3. 将所有私人资源放入/resources/static/private文件夹。
  4. 转到您的Spring安全配置类,并使用以下配置将/private个网址设为私有:.antMatchers( "/private/**").authenticated()并使/public可供匿名用户访问:.antMatchers( "/public/**").permitAll()
  5. 安全配置示例:

      @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .authorizeRequests()
                    .antMatchers( "/public/**").permitAll()
                    .antMatchers( "/private/**").authenticated()
                    .anyRequest().authenticated()
                    .and()
                    .formLogin()
                    .loginPage("/login")
                    .permitAll()
                    .and()
                    .logout()
                    .permitAll()
    
            ;
        }
    }
    

    最后尝试访问公共资源,例如,如果公共文件夹下有style.css文件,然后尝试访问它:http://localhost:808/public/style.css,浏览器应显示style.css内容。< / p>

    当您尝试访问私人文件夹(没有身份验证)时,例如私人文件夹下有一个private.css,请尝试:http://localhost:808/private/private.css。您应该被重定向到登录页面,这意味着您应该首先登录,在那个春天之后,您将可以访问private.css资源。

    关于百里香,这是相同的方法,因为公共html页面使用公共资源:<link th:href="@{/public/public.css}" rel="stylesheet" />和受保护资源用户私人帐户<link th:href="@{/private/syle.css}" rel="stylesheet" />