Thymeleaf 3.0 Spring Boot +安全集成不起作用

ygl*_*odt 6 java spring-security thymeleaf spring-boot

我很难让Thymeleaf在我的基于Spring Boot 1.4.3的项目中使用Spring Security.

标签如,例如

<div sec:authorize="hasAuthority('ADMIN')">
Run Code Online (Sandbox Code Playgroud)

根本就没有解析.

如果我尝试SpringSecurityDialect像这样手动添加:

@Bean
public SpringSecurityDialect securityDialect() {
    return new SpringSecurityDialect();
}
Run Code Online (Sandbox Code Playgroud)

我正进入(状态:

Exception in thread "main" java.lang.NoClassDefFoundError: org/thymeleaf/dialect/IExpressionEnhancingDialect
Run Code Online (Sandbox Code Playgroud)

我在我的依赖项中包含以下内容:

<dependency>
    <groupId>org.thymeleaf.extras</groupId>
    <artifactId>thymeleaf-extras-springsecurity4</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

SpringSecurityDialect似乎并没有被自动配置添加.

在我手动添加Bean之后,我得到了提到的异常.

这是一个错误还是我错过了什么?

我的Thymeleaf版本是:

<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
<thymeleaf-extras-java8time.version>3.0.0.RELEASE</thymeleaf-extras-java8time.version>
<thymeleaf-layout-dialect.version>2.1.2</thymeleaf-layout-dialect.version>
Run Code Online (Sandbox Code Playgroud)

ygl*_*odt 14

得到它的工作,如果你正在使用Thymeleaf3.0.2与Spring 1.4的引导,需要强制版本3.0.1.RELEASEthymeleaf-extras-springsecurity4(因为它继承了2.1.2版不结合Thymeleaf 3工作):

<dependency>
    <groupId>org.thymeleaf.extras</groupId>
    <artifactId>thymeleaf-extras-springsecurity4</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

标签应该使用该hasRole功能.

<div sec:authorize="hasRole('ROLE_ADMIN')">
Run Code Online (Sandbox Code Playgroud)