我第一次使用Spring Boot创建网站。我正在使用一个测试页面来显示一旦用户登录,当用户登录时,屏幕上会出现“Authenticated”字样。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
</head>
<body>
<h2>Thymleaf example</h2>
<p sec:authorize="hasRole('ROLE_USER')">
Authenticated
</p>
</body>
</html>
然而,问题是带有sec:authorize的标签仍然未被编辑和解析。因此,无论用户是否登录,都会出现经过身份验证的单词。从控制器打印用户权限证实了这一点。
我的pom.xml文件有以下依赖项。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity4</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
... dependencies for mysql and jdbc are omitted.
感谢任何帮助。注意,我使用的是Spring Boot,所以JAVA配置比XML配置更受欢迎。
请尝试将类似以下代码的内容添加到您的< code>@Configuration(或< code > @ spring boot application )类中:
@Bean
public SpringTemplateEngine templateEngine(ITemplateResolver templateResolver, SpringSecurityDialect sec) {
final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
templateEngine.addDialect(sec); // Enable use of "sec"
return templateEngine;
}
请注意,如果你强制 Spring Boot 使用 Thymeleaf 版本 3,你还必须强制使用 thymeleaf-extras-springsecurity4
依赖项的版本 3:
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity4</artifactId>
<version>3.0.1.RELEASE</version>
</dependency>
也见这个相关回答。
当您的百里叶版本为2.1.x时,请使用百里叶-extras-springsecurity4(版本为2.1.3.RELEASE),否则百里叶模板页面中的hasRole将不起作用。
您使用的是哪个版本的Spring Boot?
如果是2.2.7.版本,那么您需要为Spring Security 5添加Thymelaf附加功能:
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>
并且不需要额外的配置。