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();
}
}
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()">
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>