Spring boot + thymeleaf: войдите в систему пользователя

Я хотел бы знать, как я могу получить объект пользователя с Thymeleaf. В настоящее время я вызываю свой userService, который получит пользователя из БД. Мне не нравится этот подход, потому что для каждого вызова запрос к БД не будет.

можно ли получить пользователя из памяти?

<link href="/css/style2.css"
    th:if="${@commanderService.getCurrentCommander()} and
        ${@commanderService.getCurrentCommander().settings == 'template=1'}" 
    rel="stylesheet" type="text/css" />

CommanderService:

public Commander getCurrentCommander() {
    Object principal = 
        SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    Commander commander = findByName((String)principal);

    return commander;
}

1 ответов


Если вы используете spring security и thymeleaf, вы можете проверить: https://github.com/thymeleaf/thymeleaf-extras-springsecurity3
Например:

<div sec:authentication="name">
    The value of the "name" property of the authentication object should appear here.
</div> 

<div sec:authorize="hasRole('ROLE_ADMIN')">
    This content is only shown to administrators.
</div>