2015-03-06 5 views
19

Sto usando Spring Boot con Thymeleaf e Spring Security. Ho una vista semplice con un link di accesso. Quando l'utente si collega, vorrei cambiare il link di accesso al link di disconnessione.Thymeleaf with Spring Security - come verificare se l'utente è loggato o no?

ho provato:

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

ma non funziona - visualizza entrambi i collegamenti.

Cordiali saluti.

MODIFICA: I risolto it. Ho dovuto registrare il dialetto Thymeleaf. Per fare questo, ho creato una nuova classe di configurazione, che crea SpringSecurityDialect fagiolo:

@Configuration 
public class ThymeleafConfig { 

    @Bean 
    public SpringSecurityDialect springSecurityDialect(){ 
     return new SpringSecurityDialect(); 
    } 
} 
+1

Ho avuto lo stesso identico problema - grazie. Non dovrebbe essere così difficile farlo funzionare. –

+0

Il metodo 'SpringSecurityDialect' è disponibile solo nella versione '2.1.0.RELEASE'? Non riesco a utilizzare l'ultima versione => 2.1.2.RELEASE ... –

risposta

23

Secondo thymeleaf docs non è necessaria alcuna espressione spel. Questo non è un th: attributo.

Così si può provare:

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

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

Grazie per la risposta :). – tomdavies

0

anche possibile utilizzare sec:authorize="isFullyAuthenticated()" che verifica se un anonymousUser e 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>