with sec fragments spring spring-mvc spring-security thymeleaf

fragments - thymeleaf-extras-spring security 4



Thymeleaf con Spring Security: ¿cómo comprobar si el usuario ha iniciado sesión o no? (2)

Estoy usando Spring Boot con Thymeleaf y Spring Security. Tengo una vista simple con un enlace de inicio de sesión. Cuando el usuario inicia sesión, me gustaría cambiar el enlace de inicio de sesión al enlace de cierre de sesión.

Lo intenté:

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

pero no funciona, muestra ambos enlaces.

Atentamente.

EDIT: lo solucioné . Tuve que registrar el dialecto de Thymeleaf. Para hacer esto, creé una nueva clase de configuración, que crea el bean SpringSecurityDialect:

@Configuration public class ThymeleafConfig { @Bean public SpringSecurityDialect springSecurityDialect(){ return new SpringSecurityDialect(); } }


De acuerdo con los documentos de thymeleaf no se requiere ninguna expresión de spel . Esto no es un atributo th:

Así que puedes intentar:

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


También se puede usar sec:authorize="isFullyAuthenticated()" que verifica si es un sec:authorize="isFullyAuthenticated()" anonymousUser y 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>