Подтвердить что ты не робот

Thymeleaf с Spring Безопасность - как проверить, зарегистрирован ли пользователь или нет?

Я использую Spring Boot with Thymeleaf и Spring Security. У меня есть простой вид с ссылкой для входа. Когда пользователь войдет в систему, я хочу изменить ссылку для входа в систему.

Я пробовал:

<div sec:authorize="#{isAuthenticated()}">
  <a th:href="@{/logout}">Log out</a>
</div>
<div sec:authorize="#{isAnonymous()}">
  <a th:href="@{/login}">Log in</a>
</div>

но он не работает - он отображает обе ссылки.

С уважением.

EDIT: Я решил. Мне пришлось регистрировать диалект Тимелеафа. Для этого я создал новый класс конфигурации, который создает SpringSecurityDialect bean:

@Configuration
public class ThymeleafConfig {

    @Bean
    public SpringSecurityDialect springSecurityDialect(){
        return new SpringSecurityDialect();
    }
}
4b9b3361

Ответ 1

Согласно thymeleaf docs, выражение выражений не требуется. Это не атрибут th:.

Итак, вы можете попробовать:

<div sec:authorize="isAuthenticated()">

<div sec:authorize="isAnonymous()">

Ответ 2

Можно также использовать sec:authorize="isFullyAuthenticated()", который проверяет, есть ли его anonymousUser и rememberMe.

        <div class="button-group" sec:authorize="!isFullyAuthenticated()">
            <a href="/login">Login</a>
            <a href="/register">Register</a>
        </div>
        <div class="button-group" sec:authorize="isFullyAuthenticated()">
            <a href="/logout">Logout</a>
        </div>