春季百里香叶的html图像不会显示

时间:2020-11-03 18:09:58

标签: html spring thymeleaf

下面,我使用login.html作为在test.png中添加图像/static/images/的页面

layout

因此,在login.html中,我有<img src="../static/images/test.png" width="1000" th:src="@{images/test.png}"/>,该图像为空白图像。为什么没有显示?

在我的SecurityConfiguration.java文件中,

@Override
protected void configure(final HttpSecurity http) throws Exception {
    http
      .csrf().disable()
      .authorizeRequests()
      //.antMatchers("/**").hasRole("ADMIN")
      .antMatchers("/static").permitAll()
      .and().formLogin()
      .loginPage("/login")
      .permitAll(); 

当我使用此配置时,它将使用默认的index.html页面,该页面可以很好地显示图像。但是,如果我取消注释.antMatchers("/**").hasRole("ADMIN"),它将带我进入login.html,但无法查看图像。

1 个答案:

答案 0 :(得分:2)

我可以发现3个问题。

  1. 您宁可拥有.antMatchers("/static")而不是.antMatchers("/images/**"),因为src/main/resources/static中的任何内容都将从应用程序的根目录提供(如here所述-请注意,文件夹“ public “和”静态”可与Spring Boot互换)。
  2. .authorizeRequests()的匹配器顺序很重要!只是作为method's documentation的最后一个例子。您应该颠倒您的蚂蚁匹配器:
   .antMatchers("/images/**").permitAll() // more detailed paths should go first
   .antMatchers("/**").hasRole("ADMIN")   // more general paths should go last
  1. 考虑使用th:src="@{/images/test.png}"而不是th:src="@{images/test.png}"。开头的斜杠使相对于应用程序根的路径与第一个建议相伴。如Thymeleaf's documentation中所述:

/开头的相对URL(例如:/order/details)将自动以应用程序上下文名称作为前缀。