Je souhaite utiliser des balises JSP telles que «<security: authorize>» sur FreeMarker. Je voudrais confirmer pour moi-même qu'il a été introduit sur https://vorba.ch/2018/spring-boot-freemarker-security-jsp-taglib.html.
Il semble que FreeMarker ait à l'origine une fonction permettant d'utiliser les balises JSP. → URL de référence
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
</dependency>
</dependencies>
Le fait est que la balise Spring Security JSP (spring-security-taglibs
) et l'API JSP ( tomcat-jsp-api
) sont requises.
SecurityConfig.java
@Configuration
public class MyFreeMarkerConfig {
private final FreeMarkerConfigurer freeMarkerConfigurer;
public MyFreeMarkerConfig(FreeMarkerConfigurer freeMarkerConfigurer) {
this.freeMarkerConfigurer = freeMarkerConfigurer;
}
@PostConstruct
public void init() {
freeMarkerConfigurer.getTaglibFactory().setClasspathTlds(
Collections.singletonList("/META-INF/security.tld"));
}
}
Le but est de spécifier le chemin du fichier TLD.
index.ftlh
<#assign security=JspTaglibs["http://www.springframework.org/security/tags"]/>
<html>
<head>
<title>Index</title>
<meta charset="UTF-8">
</head>
<body>
<h1>Index</h1>
<@security.authorize access="isAuthenticated()">
<p>Hello, <@security.authentication property="principal.username"/>!</p>
</@security.authorize>
<p><a href="/secret">Go to secret page</a></p>
<form action="/logout" method="post">
<input type="submit" value="Logout">
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
</form>
</body>
</html>
Spécifiez la balise JSP avec <# assign security = JspTaglibs [" http://www.springframework.org/security/tags "] />
.
Lors de l'utilisation de balises, <@ security. Tag name Property name =" Property value ">
.
https://github.com/MasatoshiTada/freemarker-spring-security-sample
Recommended Posts