Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

One way to achieve this is by using the Thymeleaf template engine and adding the following code to the header of each template:

<html xmlns:th="http://www.thymeleaf.org">
    <head>
        ...
        <meta th:if="${#authentication.getPrincipal() != null}" 
              th:content="${#authentication.getPrincipal().getUsername()}"
              name="username"/>
        ...
    </head>
    ...
</html>

This code checks if the user is logged in and if so, displays their username in the meta tag with the name "username".

To allow WebMvcConfigurerAdapter to use Thymeleaf templates, add the following configuration code to your WebMvcConfigurerAdapter:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**")
            .addResourceLocations("/static/");
    }

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(templateEngine());
        registry.viewResolver(resolver);
    }

    ...

    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine engine = new SpringTemplateEngine();
        engine.setTemplateResolver(templateResolver());
        return engine;
    }

    private ITemplateResolver templateResolver() {
        SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode(TemplateMode.HTML);
        return resolver;
    }
}

This code configures a Thymeleaf view resolver and sets up a resource handler to serve static resources from a specific directory.