Ich möchte JSP-Tags wie "<security: authorize>" auf FreeMarker verwenden. Ich möchte selbst bestätigen, dass es unter https://vorba.ch/2018/spring-boot-freemarker-security-jsp-taglib.html eingeführt wurde.
Es scheint, dass FreeMarker ursprünglich eine Funktion zur Verwendung von JSP-Tags hat. → Referenz-URL
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>
Der Punkt ist, dass das Spring Security JSP-Tag (spring-security-taglibs
) und die JSP-API ( tomcat-jsp-api
) erforderlich sind.
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"));
}
}
Der Punkt ist, den Pfad der TLD-Datei anzugeben.
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>
Geben Sie das JSP-Tag mit "<# assign security = JspTaglibs [" http://www.springframework.org/security/tags "] />" an.
Bei Verwendung von Tags <@ security. Tag name Property name =" Property value ">
.
https://github.com/MasatoshiTada/freemarker-spring-security-sample
Recommended Posts