Thymeleaf 不解释 sec 标签

Posted

技术标签:

【中文标题】Thymeleaf 不解释 sec 标签【英文标题】:Thymeleaf not interpreting sec tags 【发布时间】:2019-05-02 17:56:21 【问题描述】:

我遇到了一个问题,即 thymleaf 无法识别我的 Spring Boot 项目中的 sec 标签。例如sec:authentication 下面的内容没有被解释,并且在浏览器的 html 中显示为原样

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head th:replace="fragments/header"> </head>
<body>
    <div id="container">
            Roles <span sec:authentication="principal.authorities"></span>
    </div>
    <footer>
        <div th:replace="fragments/footer"></div>
    </footer>
</body>
</html>

通过阅读,我需要以下依赖项,我已将其添加到我的项目中。

  <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-springsecurity4</artifactId>
        <version>3.0.2.RELEASE</version>
  </dependency>

但仍然没有运气。上面的依赖似乎是大多数人的解决方案,还有什么我可能缺少的想法吗?

【问题讨论】:

【参考方案1】:

可能有一些设置不正确。无论如何,这个问题往往总是通过添加缺少的依赖项或更改您正在使用的依赖项来解决。所以,首先,尝试更改为springsecurity5。并添加以下@Bean

配置

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.thymeleaf.extras.springsecurity5.dialect.SpringSecurityDialect;

@Configuration
public class LeafConfig 

    @Bean
    public SpringSecurityDialect springSecurityDialect()
        return new SpringSecurityDialect();
    


POM

<dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-springsecurity5</artifactId>
        <version>3.0.4.RELEASE</version>
</dependency>

另外,如果您使用 &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;,请不要将任何版本添加到您的 Thymeleaf Extras,让 Spring Boot 为您管理。

【讨论】:

感谢升级到 thymeleaf-extras-springsecurity5 修复它。 很高兴我能帮上忙 :)

以上是关于Thymeleaf 不解释 sec 标签的主要内容,如果未能解决你的问题,请参考以下文章

thymeleaf中security的sec:authorize标签不起作用的原因

thymeleaf中security的sec:authorize标签不起作用的原因

如何使用 Thymeleaf 配置 Spring Boot 并使用 sec:authentication 标签

Spring Security - Thymeleaf - 我可以在 sec:authorize 标签中评估 SPEL 表达式吗?

如何在 Spring Security thymeleaf sec 中使用列表:授权标签

为啥 html 元素中的 Html 文本不与 Thyme-leaf 文本连接?代码是[重复]