在基于Spring Boot 1.4.3的项目中,我很难让Thymeleaf与Spring Security一起使用。
标签,例如
<div sec:authorize="hasAuthority('ADMIN')">
根本无法解析。
如果我尝试SpringSecurityDialect像这样手动添加:
SpringSecurityDialect
@Bean public SpringSecurityDialect securityDialect() { return new SpringSecurityDialect(); }
我正进入(状态:
Exception in thread "main" java.lang.NoClassDefFoundError: org/thymeleaf/dialect/IExpressionEnhancingDialect
我在依赖项中包含以下内容:
<dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity4</artifactId> </dependency>
本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>
得到它的工作,如果你正在使用Thymeleaf3.0.2与Spring 1.4的引导,需要强制版本3.0.1.RELEASE的thymeleaf- extras-springsecurity4(因为它继承了2.1.2版不工作结合Thymeleaf 3):
Thymeleaf
3.0.1.RELEASE
thymeleaf- extras-springsecurity4
<dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity4</artifactId> <version>3.0.1.RELEASE</version> </dependency>
标签应使用该hasRole功能。
hasRole
<div sec:authorize="hasRole('ROLE_ADMIN')">