web-dev-qa-db-fra.com

Thymeleaf avec Spring Security - comment vérifier si l'utilisateur est connecté ou non?

J'utilise Spring Boot avec Thymeleaf et Spring Security. J'ai une vue simple avec un lien de connexion. Lorsque l'utilisateur se connecte, je souhaite changer le lien de connexion en lien de déconnexion.

J'ai essayé:

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

mais cela ne fonctionne pas - il affiche les deux liens.

Meilleures salutations.

EDIT: I résol it. J'ai dû enregistrer le dialecte Thymeleaf. Pour ce faire, j'ai créé une nouvelle classe de configuration, qui crée le bean SpringSecurityDialect:

@Configuration
public class ThymeleafConfig {

    @Bean
    public SpringSecurityDialect springSecurityDialect(){
        return new SpringSecurityDialect();
    }
}
26
tomdavies

Selon thymeleaf docs aucune expression de spel n'est requise. Ce n'est pas un attribut th :.

Vous pouvez donc essayer:

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

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

Peut également utiliser sec:authorize="isFullyAuthenticated()" qui vérifie si c'est un anonymousUser et 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>
2
reversebind